记录编号 425360 评测结果 AAAAAAAAAA
题目名称 [Nescafe19] 绿豆蛙的归宿 最终得分 100
用户昵称 GravatarBaDBoY 是否通过 通过
代码语言 C++ 运行时间 0.094 s
提交时间 2017-07-15 09:23:09 内存使用 2.30 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 100005
int read(){
	int s=0,f=1;
	char ch=getchar();
	while(ch>'9'||ch<'0'){
		if(ch=='-')
			f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		s=(s<<1)+(s<<3)+(ch^48);
		ch=getchar();
	}
	return s*f;
}
int tot,r[N],n,m,in[N],to[N];
double f[N];
bool dele[N];
struct oo{
	int fr,to,vv,next;
}c[N<<1|1];
void add(int x,int y,int z){
	c[tot].fr=x;
	c[tot].to=y;
	c[tot].vv=z;
	c[tot].next=r[x];
	r[x]=tot++;
}
int stack[N],head,tail;

int Main(){
	freopen("ldfrog.in","r",stdin);
	freopen("ldfrog.out","w",stdout);
	n=read();
	m=read();
	memset(r,-1,sizeof(r));
	for(int i=1;i<=m;i++){
		int x=read(),y=read(),z=read();
		to[x]++;
		add(y,x,z);
		in[x]++;
	}
	/*for(int i=1;i<=n;i++)
		cout<<to[i]<<endl;*/
	f[n]=in[n]=dele[n]=0;
	while(1){
		bool check=1;
		for(int i=n;i;i--){
			head=tail=0;
			if(!dele[i]&&!in[i]){
				stack[++tail]=i;
				check=0;
			}
			while(head<tail){
				int rt=stack[++head];
				dele[rt]=1;
				for(int j=r[rt];~j;j=c[j].next){
					f[c[j].to]+=(double)(f[rt]+c[j].vv)/(double)to[c[j].to];
					in[c[j].to]--;
					if(!in[c[j].to])
						stack[++tail]=c[j].to;
				}
			}
		}
		if(check)
			break;
	}
	/*double ans=0;
	for(int i=1;i<=n;i++){
		printf("%0.2lf\n",f[i]);
	}*/
	printf("%0.2lf",f[1]);
	return 0;
}
int hehe=Main();
int main(){
	;
}