VCOLDWAT - Nước lạnh
Tác giả: ll931110
Ngôn ngữ: Pascal
Program VCOLDWAT;
Const
input = '';
output = '';
Var
x,y,z,head,adj,trace: array[1..100000] of longint;
root: array[1..100000] of boolean;
n,c: longint;
Procedure init;
Var
f: text;
i: longint;
Begin
Fillchar(head, sizeof(head), 0);
Fillchar(root, sizeof(root), true);
Assign(f, input);
Reset(f);
Readln(f, n, c);
For i:= 1 to c do
Begin
Readln(f, x[i], y[i], z[i]);
head[x[i]]:= head[x[i]] + 2;
End;
Close(f);
For i:= 2 to n do head[i]:= head[i] + head[i - 1];
head[n + 1]:= 2 * c;
For i:= 1 to c do
Begin
adj[head[x[i]]]:= y[i];
dec(head[x[i]]);
root[y[i]]:= false;
adj[head[x[i]]]:= z[i];
dec(head[x[i]]);
root[y[i]]:= false;
End;
End;
Procedure DFS(u: longint);
Var
v: longint;
Begin
For v:= head[u] + 1 to head[u + 1] do
if trace[adj[v]] = 0 then
Begin
trace[adj[v]]:= trace[u] + 1;
DFS(adj[v]);
End;
End;
Procedure solve;
Var
f: text;
i,k: longint;
Begin
For i:= 1 to n do if root[i] then
Begin
k:= i;
break;
End;
trace[k]:= 1;
DFS(k);
Assign(f, output);
Rewrite(f);
For i:= 1 to n do writeln(f, trace[i]);
Close(f);
End;
Begin
init;
solve;
End.