洛谷P1038神經(jīng)網(wǎng)絡(luò)
#include <iostream>
using namespace std;
const int mx=105;
int n,p,s,t,ready,finish=1,c[mx],u[mx],rd[mx],cd[mx],g[mx][mx],num[mx];
bool is;
int main()
{
cin>>n>>p;
for(int i=1;i<=n;i++)
{
cin>>c[i]>>u[i];
c[i]-=u[i];
}
for(int i=1;i<=p;i++)
{
cin>>s>>t;
cin>>g[s][t];
rd[t]++;
cd[s]++;
}
for(int i=1;i<=n;i++)
if(rd[i]==0)
{
num[++finish]=i;
c[i]+=u[i];
}
while(ready<finish)
{
ready++;
if(c[num[ready]]>0)
{
for(int i=1;i<=n;i++)
if(g[num[ready]][i]!=0)
{
c[i]+=g[num[ready]][i]*c[num[ready]];
num[++finish]=i;
}
if(cd[num[ready]]!=0)
c[num[ready]]=0;
}
}
for(int i=1;i<=n;i++)
if(c[i]>0)
{
is=true;
cout<<i<<" "<<c[i]<<endl;
}
if(!is)
cout<<"NULL"<<endl;
return 0;
}
標(biāo)簽: