#include<bits/stdc++.h>
using namespace std;
int n,m,ti,lamp;
double E[21][101],N[21][101],mp[21][21],tot[21][101],tot_0[21];
int main()
{
cin>>n>>m>>ti;
for(int i=1;i<=m;i++)
{
int start,end;
cin>>start>>end;
mp[start][end]=1;
}
for(int i=1;i<=n;i++)
{
cin>>N[i][0];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(mp[i][j])
{
tot_0[i]+=N[j][0];
}
}
if(!tot_0[i])
{
for(int k=0;k<=ti;k++)
tot[i][k]=1;
tot_0[i]=1;
}
}
cin>>lamp;
cin>>N[lamp][0];
E[1][0]=N[1][0];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(mp[i][j])
{
tot[i][0]+=N[j][0];
}
}
for(int j=1;j<=n;j++)
{
if(mp[i][j])
{
E[j][0]+=E[i][0]*N[j][0]/tot[i][0];
}
}
}
for(int i=1;i<=n;i++)
tot[i][0]=tot_0[i];
for(int k=1;k<=ti;k++)
{
cout<<"Round"<<" "<<k<<":"<<endl;;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(mp[i][j])
{
tot[i][k]+=N[j][k-1];
}
}
if(i==1)
E[i][k]=E[i][k-1]*(tot[i][k-1]+20)/(20+tot[i][k]);
for(int j=1;j<=n;j++)
{
if(mp[i][j])
{
E[j][k]+=E[i][k]*N[j][k-1]/tot[i][k];
}
}
}
for(int i=1;i<=n;i++)
{
N[i][k]=N[i][k-1]*E[i][k]/E[i][k-1];
cout<<"No."<<i<<":"<<N[i][k]<<endl;
}
cout<<endl;
}
return 0;
}
标签:end,21,int,备份,cin,lamp,食物,101
From: https://www.cnblogs.com/wzzorz/p/18004487