Pagini recente » Cod sursa (job #262298) | Cod sursa (job #2703361) | Cod sursa (job #45067) | Cod sursa (job #91280) | Cod sursa (job #1181507)
program paduri;
type lista=^celula;
celula=record
info:longint;
pred:lista;
end;
var lda:array[1..100005] of lista;
tata,rank:array[1..100006] of longint;
a,b,n,i,nr,k,j,m,ok:longint;
r : lista;
b1,b2 : array [0..1 shl 17] of char;
procedure actualizare_tata (pf,pt : longint );
var r : lista;
begin
r:=lda[pf];
tata[pf]:=pt;
while r<>nil do begin
actualizare_tata(r^.info,pt);
r:=r^.pred;
end;
end;
procedure alege_rank (nod1:longint; nod2 : longint);
begin
if rank[nod1]=rank[nod2] then rank[nod1]:=rank[nod1]+1;
if rank[nod1]<rank[nod2] then actualizare_tata(nod1,nod2)
else actualizare_tata(nod2,nod1);
end;
begin
assign(input,'disjoint.in'); settextbuf(input,b1); reset(input);
assign(output,'disjoint.out'); settextbuf(output,b2); rewrite(output);
readln(n,m);
for i:=1 to n do tata[i]:=i;
for i:=1 to n do rank[i]:=1;
for j:=1 to m do begin
readln(nr,a,b);
case nr of
1 : alege_rank(tata[a],tata[b]);
2 : if tata[a]=tata[b] then writeln('DA')
else writeln('NU');
end;
end;
close(input);
close(output);
end.