记录编号 |
425360 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[Nescafe19] 绿豆蛙的归宿 |
最终得分 |
100 |
用户昵称 |
BaDBoY |
是否通过 |
通过 |
代码语言 |
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(){
;
}