记录编号 21394 评测结果 AAAAAAAAAA
题目名称 [USACO Feb07] 奶牛聚会 最终得分 100
用户昵称 Gravatar苏轼 是否通过 通过
代码语言 Pascal 运行时间 0.015 s
提交时间 2010-11-10 10:06:16 内存使用 2.50 MiB
显示代码纯文本
  1. program sparty(input,output);
  2.  
  3. type
  4. re=record
  5. len,en,next:longint;
  6. end;
  7.  
  8. var
  9. n,x,m,i,a,b,t,wh:longint;
  10. w:array[0..1,1..100015]of re;
  11. len:array[0..1]of longint;
  12. tail,ans:array[0..1,1..1000]of longint;
  13.  
  14. procedure addway(const a,b,t,wh:longint);
  15. begin
  16. inc(len[wh]);
  17. w[wh,tail[wh,a]].en:=b;
  18. w[wh,tail[wh,a]].len:=t;
  19. w[wh,tail[wh,a]].next:=len[wh];
  20. tail[wh,a]:=len[wh];
  21. end;
  22.  
  23. procedure spfa;
  24. var
  25. i,j:longint;
  26. q:array[1..10000]of longint;
  27.  
  28. procedure expand(const c:longint);
  29. var
  30. i:integer;
  31. begin
  32. i:=c;
  33.  
  34. repeat
  35. if ans[wh,c]+w[wh,i].len<ans[wh,w[wh,i].en] then
  36. begin
  37. ans[wh,w[wh,i].en]:=ans[wh,c]+w[wh,i].len;
  38.  
  39. inc(j);
  40. q[j]:=w[wh,i].en;
  41. end;
  42.  
  43. i:=w[wh,i].next;
  44. until i=tail[wh,c];
  45.  
  46. exit;
  47. end;
  48.  
  49. begin
  50. i:=1;
  51. j:=1;
  52. q[1]:=x;
  53.  
  54. while i<=j do
  55. begin
  56. expand(q[i]);
  57. inc(i);
  58. end;
  59. end;
  60.  
  61. begin
  62. assign(input,'sparty.in');
  63. reset(input);
  64. assign(output,'sparty.out');
  65. rewrite(output);
  66.  
  67. readln(n,m,x);
  68.  
  69. for i:=1 to n do
  70. begin
  71. ans[0,i]:=maxint;
  72. ans[1,i]:=maxint;
  73. tail[0,i]:=i;
  74. tail[1,i]:=i;
  75. end;
  76.  
  77. len[0]:=n;
  78. len[1]:=n;
  79. for i:=1 to m do
  80. begin
  81. readln(a,b,t);
  82. addway(a,b,t,0);
  83. addway(b,a,t,1);
  84. end;
  85.  
  86. ans[0,x]:=0;
  87. ans[1,x]:=0;
  88.  
  89. wh:=0;
  90. spfa;
  91. wh:=1;
  92. spfa;
  93.  
  94. a:=0;
  95. for i:=1 to n do
  96. if ans[0,i]+ans[1,i]>a then
  97. a:=ans[0,i]+ans[1,i];
  98.  
  99. writeln(a);
  100.  
  101. close(input);
  102. close(output);
  103. end.
  104.  
  105.  
  106.