洛谷4316綠豆蛙的歸宿
阿新 • • 發佈:2018-05-23
sca problem get pac con namespace tdi double turn
題目:https://www.luogu.org/problemnew/show/P4316
十分裸的裸題。甚至是有向無環圖。
#include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; const int N=1e5+5; int n,m,du[N],tp[N],head[N]; double f[N]; queue<int> q; struct Edge{ int next,to,w; Edge(intn=0,int t=0,int w=0):next(n),to(t),w(w) {} }edge[N<<1]; int main() { scanf("%d%d",&n,&m);int x,y,z; for(int i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&z);du[x]++; edge[i]=Edge(head[y],x,z);head[y]=i; } for(int i=1;i<=n;i++) { tp[i]=du[i]; if(!du[i])q.push(i); } while(q.size()) { int k=q.front();q.pop(); for(int i=head[k];i;i=edge[i].next) { f[edge[i].to]+=((f[k]+edge[i].w)*1.0)/du[edge[i].to]; tp[edge[i].to]--;if(!tp[edge[i].to])q.push(edge[i].to); } } printf("%.2lf",f[1]); return 0; }
洛谷4316綠豆蛙的歸宿