VCOLDWAT - Nước lạnh

Tác giả: ladpro98

Ngôn ngữ: Pascal

program vcoldwat;
uses    math;
type    e=record
                l,r:longint;
                isLeaf:boolean;
        end;
const   fi='';
        maxN=100000;

var     a:array[1..maxN] of e;
        res:array[1..maxN] of longint;
        isRoot:array[1..maxN] of boolean;
        n,root:longint;

procedure input;
var     inp:text;
        i,c,x,y,z:longint;
begin
        assign(inp,fi);
        reset(inp);
        readln(inp,n,c);
        for i:=1 to n do
        begin
                a[i].isLeaf:=true;
                isRoot[i]:=true;
        end;
        for i:=1 to c do
        begin
                readln(inp,x,y,z);
                a[x].l:=min(y,z);
                a[x].r:=max(y,z);
                a[x].isLeaf:=false;
                isRoot[y]:=false;
                isRoot[z]:=false;

        end;
        close(inp);
end;

procedure back(i,k:longint);
begin
        res[i]:=k;
        if not a[i].isLeaf then
        begin
                back(a[i].l,k+1);
                back(a[i].r,k+1);
        end;
end;

procedure init;
var  i:longint;
begin
        for i:=1 to N do
        if isRoot[i] then
        begin
                root:=i;
                exit;
        end;
end;

procedure output;
var     i:longint;
begin
        for i:=1 to N do
        writeln(res[i]);
end;

begin
        input;
        init;
        back(root,1);
        output;
end.

Download