fork download
  1. {$MODE OBJFPC}
  2. program SmartDogContest;
  3. const
  4. InputFile = '';
  5. OutputFile = '';
  6. maxN = 1000;
  7. maxM = 10000;
  8. maxW = 1000000000;
  9. maxD = (maxN + 1) * maxW;
  10. type
  11. TEdge = record
  12. u, v, c: Integer;
  13. end;
  14. var
  15. fi, fo: TextFile;
  16. e: array[1..maxM] of TEdge;
  17. d: array[1..maxN + 1, 1..maxN] of Int64;
  18. n, m: Integer;
  19. BestMiu: Extended;
  20.  
  21. procedure Enter;
  22. var
  23. i: Integer;
  24. begin
  25. ReadLn(fi, n, m);
  26. for i := 1 to m do
  27. with e[i] do
  28. ReadLn(fi, u, v, c);
  29. end;
  30.  
  31. procedure Init;
  32. var
  33. i: Integer;
  34. begin
  35. FillQWord(d, SizeOf(d) div 8, maxD);
  36. for i := 1 to n do
  37. d[1, i] := 0;
  38. end;
  39.  
  40. procedure Minimize(var target: Int64; value: Int64); inline;
  41. begin
  42. if target > value then target := value;
  43. end;
  44.  
  45. procedure Optimize;
  46. var
  47. k, i: Integer;
  48. begin
  49. for k := 2 to n + 1 do //Tinh d[k, v] qua cac d[k - 1, u]
  50. for i := 1 to m do
  51. with e[i] do
  52. Minimize(d[k, v], d[k - 1, u] + c);
  53. end;
  54.  
  55. procedure GetBest;
  56. var
  57. v, k: Integer;
  58. min, max, trial: Extended;
  59. begin
  60. min := maxD;
  61. for v := 1 to n do
  62. if d[n + 1, v] < maxD then
  63. begin
  64. max := -maxD;
  65. for k := 1 to n do
  66. if d[k, v] < maxD then
  67. begin
  68. trial := (d[n + 1, v] - d[k, v]) / (n - k + 1);
  69. if max < trial then max := trial;
  70. end;
  71. if max < min then
  72. min := max;
  73. end;
  74. BestMiu := min;
  75. end;
  76.  
  77. begin
  78. AssignFile(fi, InputFile); Reset(fi);
  79. AssignFile(fo, OutputFile); Rewrite(fo);
  80. try
  81. Enter;
  82. Init;
  83. Optimize;
  84. GetBest;
  85. if BestMiu = maxD then
  86. Write(fo, 'NO TOUR')
  87. else
  88. Write(fo, BestMiu:0:2);
  89. finally
  90. CloseFile(fi); CloseFile(fo);
  91. end;
  92. end.
Success #stdin #stdout 0s 8232KB
stdin
Standard input is empty
stdout
NO TOUR