Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const
- inf = 1000000;
- var
- a, b, c, i, j, k: int64;
- ar: array [1..100, 1..100] of int64;
- used: array [1..100] of boolean;
- q, p: boolean;
- procedure ne_dfs(t: int64);
- var
- j: int64;
- begin
- write(t, ' ');
- for j := 1 to a do
- if (ar[j, j] < 0) and (ar[t, j] <> inf) and (j <> t) and (not(used[j])) then begin
- used[j] := true;
- ne_dfs(j);
- end;
- end;
- begin
- readln(a);
- for i := 1 to a do
- for j := 1 to a do begin
- ar[i, j] := inf;
- if i = j then ar[i, i] := 0;
- end;
- for i := 1 to a do begin
- for j := 1 to a do
- read(ar[i, j]);
- readln;
- end;
- for k := 1 to a do
- for i := 1 to a do
- for j := 1 to a do
- if ar[i, j] > ar[i, k] + ar[k, j] then ar[i, j] := ar[i, k] + ar[k, j];
- q := false;
- for i := 1 to a do
- if ar[i, i] < 0 then q := true;
- if q then begin
- for i := 1 to a do
- used[i] := false;
- writeln('YES');
- for i := 1 to a do begin
- p := false;
- if (ar[i, i] < 0) and (not(used[i])) then begin
- ne_dfs(i);
- writeln;
- break;
- end;
- end;
- end
- else writeln('NO');
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement