Cod sursa(job #244257)

Utilizator cheery_g1rlHaller Emanuela cheery_g1rl Data 14 ianuarie 2009 20:04:26
Problema Paduri de multimi disjuncte Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.98 kb
type lista=^element;
     element=record
        i:longint;
        a:lista;
              end;
var v,u:array[1..100000] of lista;
    n,m,i,c,x,y:longint;
    p:lista;

procedure reuniune(x,y:longint);
  begin
    u[x]^.a:=v[y];
    u[x]:=u[y];
    v[y]:=v[x];
  end;
procedure determinare(x,y:longint);
  var ok:boolean;
      p:lista;
  begin
    ok:=false;
    p:=v[x];
    while (p^.a<>nil)and(not ok) do
      begin
        if p^.i=y then ok:=true;
        p:=p^.a;
      end;
    if (p^.a=nil)and(p^.i=y) then ok:=true;
      if ok then writeln('DA')
        else writeln('NU');
  end;
begin
assign(input,'disjoint.in'); reset(input);
assign(output,'disjoint.out'); rewrite(output);
readln(n,m);
for i:=1 to n do
  begin
    new(p);
    p^.i:=i;
    p^.a:=nil;
    v[i]:=p;
    u[i]:=p;
  end;
for i:=1 to m do
  begin
    readln(c,x,y);
    if c=1 then reuniune(x,y)
           else determinare(x,y);
  end;
close(output);
close(input);
end.