#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");
}
}
poj 1926
最新推荐文章于 2020-09-30 09:43:21 发布