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