记录编号 406812 评测结果 AAAAAAA
题目名称 [NOIP 2003]神经网络 最终得分 100
用户昵称 Gravatarliuyu 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2017-05-19 21:43:12 内存使用 0.48 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<queue>
  4. #include<vector>
  5. #include<algorithm>
  6. using namespace std;
  7. const int maxn=203;
  8. int n,p,vis[maxn],x,y,ww,w[maxn][maxn],c[maxn],u[maxn];
  9. queue<int>q;
  10. vector<int>b[maxn];
  11. vector<int>ans;
  12. void bfs()
  13. {
  14. while(!q.empty())
  15. {
  16. int v=q.front();
  17. q.pop();
  18. if(c[v]<=0)continue;
  19. for(int i=0;i<b[v].size();i++)
  20. {
  21. c[b[v][i]]+=w[v][b[v][i]]*c[v];
  22. if(!vis[b[v][i]]){c[b[v][i]]-=u[b[v][i]];q.push(b[v][i]);vis[b[v][i]]=1;}
  23. }
  24. if(b[v].empty())ans.push_back(v);
  25. }
  26. }
  27. void print()
  28. {
  29. int a=0;
  30. sort(ans.begin(),ans.end());
  31. for(int i=0;i<ans.size();i++)
  32. if(c[ans[i]]>0){printf("%d %d\n",ans[i],c[ans[i]]);a=1;}
  33. if(!a)printf("NULL");
  34. }
  35. int main()
  36. {
  37. freopen("sjwl.in","r",stdin);
  38. freopen("sjwl.out","w",stdout);
  39. scanf("%d%d",&n,&p);
  40. for(int i=1;i<=n;i++)
  41. {
  42. scanf("%d%d",&c[i],&u[i]);
  43. if(c[i]!=0)q.push(i);
  44. }
  45. for(int i=1;i<=p;i++)
  46. {
  47. scanf("%d%d%d",&x,&y,&ww);
  48. b[x].push_back(y);
  49. w[x][y]=ww;
  50. }
  51. bfs();
  52. print();
  53. return 0;
  54. }