poj 1926

来源:互联网 发布:windows nt 6.1 编辑:程序博客网 时间:2024/06/06 04:16
#include<cstdio>#include<cstring>#include<vector>#include<algorithm>#define exp 1e-5using namespace std;vector<int>G[1600];double dp[2][160];double ABS(double a){if(a>0)return a;elsereturn -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");     }}

0 0
原创粉丝点击