Advertisement
ice_tea

Untitled

Apr 11th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.17 KB | None | 0 0
  1. const
  2.   inf = 1000000;
  3.  
  4. var
  5.   a, b, c, i, j, k: int64;
  6.   ar: array [1..100, 1..100] of int64;
  7.   used: array [1..100] of boolean;
  8.   q, p: boolean;
  9.  
  10. procedure ne_dfs(t: int64);
  11. var
  12.   j: int64;
  13.  
  14. begin
  15.   write(t, ' ');
  16.   for j := 1 to a do
  17.     if (ar[j, j] < 0) and (ar[t, j] <> inf) and (j <> t) and (not(used[j])) then begin
  18.       used[j] := true;
  19.       ne_dfs(j);
  20.     end;
  21. end;
  22.  
  23. begin
  24.   readln(a);
  25.   for i := 1 to a do
  26.     for j := 1 to a do begin
  27.       ar[i, j] := inf;
  28.       if i = j then ar[i, i] := 0;
  29.     end;
  30.   for i := 1 to a do begin
  31.     for j := 1 to a do
  32.       read(ar[i, j]);
  33.     readln;
  34.   end;
  35.   for k := 1 to a do
  36.     for i := 1 to a do
  37.       for j := 1 to a do
  38.         if ar[i, j] > ar[i, k] + ar[k, j] then ar[i, j] := ar[i, k] + ar[k, j];
  39.   q := false;
  40.   for i := 1 to a do
  41.     if ar[i, i] < 0 then q := true;
  42.   if q then begin
  43.     for i := 1 to a do
  44.       used[i] := false;
  45.     writeln('YES');
  46.     for i := 1 to a do begin
  47.       p := false;
  48.       if (ar[i, i] < 0) and (not(used[i])) then begin
  49.         ne_dfs(i);
  50.         writeln;
  51.         break;
  52.       end;
  53.     end;
  54.   end
  55.   else writeln('NO');
  56. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement