记录编号 460880 评测结果 AAAAAWW
题目名称 [NOIP 2003]神经网络 最终得分 71
用户昵称 Gravatar하루Kiev 是否通过 未通过
代码语言 C++ 运行时间 0.003 s
提交时间 2017-10-18 18:37:04 内存使用 0.37 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
int n,p,c[105],u[105],ru[105],wh[105];
int a[105][105];
bool b[105][105];
bool sr[105];
void DJ()
{
     queue<int> q;
     for(int i=1;i<=n;i++)
       if(ru[i]==0&&c[i]>0)
       {
         q.push(i);
         ru[i]--;
         //sr[i]=1;
       }
     for(int i=1;i<=n;i++)
       if(ru[i]>0)
         c[i]-=u[i];
     while(!q.empty())
     {
       int k=q.front();
       q.pop();
       for(int i=1;i<=n;i++)
       {   
         if(b[k][i]==1)
         {
           ru[i]--;
           if(c[k]>0) 
             c[i]+=c[k]*a[k][i]; 
           if(ru[i]==0)
           {   
              ru[i]--;
              q.push(i);
           }
         }
       }
     }
}
int main()
{
	freopen("sjwl.in","r",stdin);
	freopen("sjwl.out","w",stdout);
    bool pd=0;
    scanf("%d%d",&n,&p);
    for(int i=1;i<=n;i++)
      scanf("%d%d",&c[i],&u[i]);
    for(int i=1;i<=p;i++)
    {
      int xx,yy,ww;
      scanf("%d%d%d",&xx,&yy,&ww);
        a[xx][yy]=ww;
        b[xx][yy]=1;
        sr[xx]=1;
        ru[yy]++;
    }
    for(int i=1;i<=n;i++)
      for(int j=1;j<=n;j++)
        if(b[i][j]==1)
           wh[j]+=a[i][j];
    DJ();
    for(int i=1;i<=n;i++)
      if(c[i]>0&&sr[i]==0)
      {
        pd=1;
        break;
      }
    if(pd==1)
      for(int i=1;i<=n;i++)
        if(sr[i]==0&&c[i]>0)
          cout<<i<<" "<<c[i]<<endl;
    if(pd==0)
      cout<<"NULL";
    return 0;
}