Cod sursa(job #1623794)

Utilizator trifa_mariaTrifa Maria trifa_maria Data 1 martie 2016 21:43:22
Problema Paduri de multimi disjuncte Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.11 kb
program mire;
var f,g:text;
     bufin,bufout:array[1.. 1 shl 16] of byte;
     n,m,c,x,y,i,z,r:longint;
    t:array[1..100000] of longint;
{function ra(nod:longint):longint;
begin
 if t[nod]<>0 then
  ra:=ra(t[nod])
  else
 ra:=nod;
end;
function rad(nod:longint):longint;
begin
 while t[nod]<>0 do
  nod:=t[nod];
 rad:=nod;
end;    }
function radacina(nod:longint):longint;
begin
  if t[nod]=0 then
    radacina:=nod
  else
   begin
      t[nod]:=radacina(t[nod]);
      radacina:=t[nod];
   end;
end;

begin
assign(f,'disjoint.in'); reset(f);
assign(g,'disjoint.out'); rewrite(g);
settextbuf(f,bufin); settextbuf(g,bufout);
  readln(f,n,m);

  for i:=1 to m do
    begin
       readln(f,c,x,y);
       if c=1 then
          begin
             r:=radacina(x);
             z:=radacina(y);
             t[z]:=r;
          end
       else
         begin
            if radacina(x)=radacina(y) then
               writeln(g,'DA')
             ELSE
                writeln(g,'NU')
         end;

    end;
    //for i:=1 to n do
      //write(g,t[i],' ');
close(f);
close(g);
end.