1. 程式人生 > >洛谷4316綠豆蛙的歸宿

洛谷4316綠豆蛙的歸宿

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(int
n=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綠豆蛙的歸宿