poj 1926

xiaoxiao2021-02-28  99

#include<cstdio> #include<cstring> #include<vector> #include<algorithm> #define exp 1e-5 using namespace std; vector<int>G[1600]; double dp[2][160]; double ABS(double a) { if(a>0) return a; else return -a; } int main() { int T; scanf("%d",&T); while(T--) { int n,m; scanf("%d%d",&n,&m); memset(dp,0,sizeof(dp)); for(int j=1;j<=120;j++) G[j].clear(); for(int i=1;i<=n;i++) scanf("%lf",&dp[0][i]); for(int i=1;i<=m;i++) { int a,b; scanf("%d%d",&a,&b); G[a].push_back(b); G[b].push_back(a); } int s=0; int tot=0; while(1) { s^=1; for(int j=1;j<=160;j++) dp[s][j]=0; for(int j=1;j<=n;j++) { int num=G[j].size(); if(num==0) dp[s][j]+=dp[s^1][j]; for(int k=0;k<num;k++) { int to=G[j][k]; dp[s][to]+=dp[s^1][j]/num; } } int flag=0; for(int j=1;j<=n;j++) { if(ABS(dp[s][j]-dp[s^1][j])>exp) flag=1; } if(!flag) break; } for(int i=1;i<=n;i++) printf("%.3lf\n",dp[s][i]); printf("\n"); } }
转载请注明原文地址: https://www.6miu.com/read-56952.html

最新回复(0)