#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
using namespace std;
double capcity[105];
const double eps = 1e-5;
int point[105][105];
int n,m;
double Abs(double f)
{
return f>0?f:-f;
}
void solve()
{
while(true)
{
double temp[105];
memset(temp,0,sizeof(temp));
for(int i=0;i<n;i++)
{
if(capcity[i]>eps)
{
if(point[i][0]==0) {temp[i]=capcity[i];}
else
{
double xi = capcity[i]/point[i][0];
for(int j=1;j<=point[i][0];j++)
temp[point[i][j]] += xi;
}
}
}
int i;
for( i=0;i<n;i++)
if(Abs(temp[i]-capcity[i])>eps) break;
if(i==n) break;
for(int i=0;i<n;i++)
capcity[i]= temp[i];
}
for(int i=0;i<n;i++)
printf("%.3lf\n",capcity[i]);
puts("");
}
void init()
{
int test;
scanf("%d",&test);
while(test--)
{
memset(point,0,sizeof(point));
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%lf",&capcity[i]);
for(int i=0;i<m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
a--,b--;
point[a][0]++,point[a][point[a][0]]=b;
point[b][0]++,point[b][point[b][0]]=a;
}
solve();
}
}
int main()
{
init();
return 0;
}
点击打开链接
POJ 1926 Pollution 直接模拟也能过!!
最新推荐文章于 2020-09-30 09:43:21 发布