比赛 20101116 评测结果 ATTTTTTTTA
题目名称 城市 最终得分 20
用户昵称 itachi 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-11-16 11:06:11
显示代码纯文本
  1. program t4(input,output);
  2. var
  3. m,n,u,v,s,i,j,ans:longint;
  4. fi:array[1..10000]of longint;
  5. data:array[1..10000,0..1000]of integer;
  6. oil:array[1..10000,1..1000]of longint;
  7. procedure init;
  8. var
  9. ai,bi,ci:longint;
  10. begin
  11. readln(n,m,u,v,s);
  12. for i:= 1 to n do
  13. readln(fi[i]);
  14. for i:= 1 to n do
  15.  
  16. data[i,0]:=0;
  17.  
  18. for i:= 1 to m do
  19. begin
  20. readln(ai,bi,ci);
  21. if ai<>bi then
  22. begin
  23. if ci<=s then
  24. begin
  25. inc(data[ai,0]);
  26. data[ai,data[ai,0]]:=bi;
  27. oil[ai,data[ai,0]]:=ci;
  28. inc(data[bi,0]);
  29. data[bi,data[bi,0]]:=ai;
  30. oil[bi,data[bi,0]]:=ci;
  31. end;
  32. end;
  33. end;
  34. close(input);
  35. end;
  36. procedure dfs(ss,oi,t:longint);
  37. var
  38. i,k:longint;
  39. begin
  40. if ss=v then
  41. begin
  42. if t<ans then ans:=t;
  43. exit;
  44. end;
  45. for i := 1 to data[ss,0] do
  46. begin
  47. k:=data[ss,i];
  48. if oi+oil[ss,i]<= s
  49. then
  50. begin
  51. if fi[k]>t
  52. then dfs(k,oi+oil[ss,i],fi[k])
  53. else dfs(k,oi+oil[ss,i],t);
  54.  
  55. end;
  56.  
  57. end;
  58. end;
  59. begin
  60. assign(input,'cost.in');
  61. reset(input);
  62. assign(output,'cost.out');
  63. rewrite(output);
  64. init;
  65. ans:=maxlongint;
  66. dfs(u,0,fi[u]) ;
  67. if ans<>maxlongint then
  68. writeln(ans) else writeln(-1);
  69. close(output);
  70. end.