记录编号 205847 评测结果 AAAAAAAAAA
题目名称 [USACO Dec05]清理牛棚 最终得分 100
用户昵称 Gravatarwaynest 是否通过 通过
代码语言 C++ 运行时间 0.500 s
提交时间 2015-11-05 19:20:22 内存使用 1.54 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<vector>
  3. #include<queue>
  4. using namespace std;
  5. struct node
  6. {
  7. int to,v;
  8. };
  9. vector <node> map[86404];
  10. queue <int> q;
  11. bool in[86404];
  12. int n,m,e;
  13. int data1,data2,data3;
  14. int f[86404];
  15.  
  16. void spfa()
  17. {
  18. f[m]=0;
  19. q.push(m);
  20. in[m]=true;
  21. int now,tmp;
  22. while(!q.empty())
  23. {
  24. now = q.front();
  25. q.pop();
  26. in[now]=false;
  27. for(int i=0;i<map[now].size();++i)
  28. {
  29. tmp=map[now][i].to;
  30. if(f[tmp] > f[now] + map[now][i].v)
  31. {
  32. f[tmp] = f[now] + map[now][i].v;
  33. if(!in[tmp])
  34. {
  35. q.push(tmp);
  36. in[tmp] = true;
  37. }
  38. }
  39. }
  40. }
  41. }
  42.  
  43. int main()
  44. {
  45. freopen("clean.in","r",stdin);
  46. freopen("clean.out","w",stdout);
  47. scanf("%d%d%d",&n,&m,&e);
  48. for(int i=1;i<=n;++i)
  49. {
  50. scanf("%d%d%d",&data1,&data2,&data3);
  51. map[data1].push_back( (node) {data2+1,data3} );
  52. }
  53. for(int i=e+1;i>=m;--i)
  54. {
  55. map[i].push_back( (node) {i-1,0} );
  56. f[i]=0x3fffffff;
  57. }
  58. spfa();
  59. if(f[e+1] == 0x3fffffff) printf("-1");
  60. else printf("%d",f[e+1]);
  61. return 0;
  62.  
  63.  
  64. }