记录编号 |
425342 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[Nescafe19] 绿豆蛙的归宿 |
最终得分 |
100 |
用户昵称 |
Hzoi_Mafia |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.088 s |
提交时间 |
2017-07-15 08:39:07 |
内存使用 |
2.26 MiB |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
inline int read(){
int sum(0);
char ch(getchar());
for(;ch<'0'||ch>'9';ch=getchar());
for(;ch>='0'&&ch<='9';sum=sum*10+(ch^48),ch=getchar());
return sum;
}
struct edge{
int s,e,n,w;
bool mark;
}a[200001];
int pre[100001],tot;
inline void insert(int s,int e,int w){
a[++tot].s=s;
a[tot].e=e;
a[tot].w=w;
a[tot].mark=false;
a[tot].n=pre[s];
pre[s]=tot;
}
int degree[100001];
int n,m;
double f[100001];
//bool vis[100001];
/*inline void dfs(int u){
// cout<<u<<endl;
if(u==1)
return;
// vis[u]=1;
for(int i=pre[u];i!=-1;i=a[i].n)
if(!a[i].mark){
// a[i].mark=1;
int e(a[i].e);cout<<u<<' '<<e<<endl;
f[e]+=(double)a[i].w/degree[e];
f[e]+=(double)f[u]/degree[e];
dfs(a[i].e);
}
// for(int i=pre[u];i!=-1;i=a[i].n)
// if(!vis[a[i].e])
// dfs(a[i].e);
}*/
inline double dfs(int u){
if(u==n)
return 0;
for(int i=pre[u];i!=-1;i=a[i].n){
f[u]+=dfs(a[i].e)/(double)degree[u];
f[u]+=(double)a[i].w/(double)degree[u];
}
return f[u];
}
inline int ain(){
freopen("ldfrog.in","r",stdin);
freopen("ldfrog.out","w",stdout);
memset(pre,-1,sizeof(pre));
n=read(),m=read();
for(int i=1;i<=m;i++){
int x(read()),y(read()),z(read());
insert(x,y,z);
degree[x]++;
}
// double ans(0);
// for(int i=1;i<=n;i++)
// ans+=f[i];
printf("%.2f",dfs(1));
}
int in(ain());
int main(){;}