#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;
ti+=5;
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];
N[i][1]=N[i][0];
N[i][2]=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];
N[lamp][1]=N[lamp][0];
N[lamp][2]=N[lamp][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++)
{
if(k>=6)
cout<<"Round"<<" "<<k-5<<":"<<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]+10)/(10+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];
}
}
}
N[1][k]=E[1][k];
if(k>=6)
cout<<"No."<<1<<":"<<N[1][k]<<endl;
for(int i=2;i<=n;i++)
{
if(i!=lamp)
N[i][k+2]=(N[i][k-1]*(E[i][k]+30)/(E[i][k-1]+30)+N[i][k+1])/2;
else
{
N[i][k+2]=(N[i][k-1]*(E[i][k])/(E[i][k-1])+N[i][k+1])/2;
}
if(k>=6)
cout<<"No."<<i<<":"<<N[i][k]<<endl;
}
cout<<endl;
}
return 0;
}
标签:21,int,lamp,食物,ti,101,cout
From: https://www.cnblogs.com/wzzorz/p/18004783