Pagini recente » Rating Manolache Gabriel (ciuz99best) | Profil HuehuehueBrazil1 | Cod sursa (job #2402356) | Profil: | Cod sursa (job #1181492)
program paduri;
type lista=^celula;
celula=record
info:longint;
pred:lista;
end;
var lda:array[1..100000] of lista;
tata,rang:array[1..100000] of longint;
a,b,n,i,nr,k,j,m,ok:longint;
r : lista;
b1,b2 : array [0..1 shl 17] of char;
procedure aktualizare(nod,tata_nod : longint);
var r : lista;
begin
r:=lda[nod];
tata[nod]:=tata_nod;
while r<>nil do begin
aktualizare(r^.info,tata_nod);
r:=r^.pred;
end;
end;
procedure add(nod:longint; tata_nod : longint; var p : lista);
var r:lista;
begin
new(r);
r^.info:=nod;
r^.pred:=p;
p:=r;
if rang[nod]=rang[tata_nod] then begin
rang[tata_nod]:=rang[tata_nod]+1;
aktualizare(nod,tata_nod);
end
else if rang[nod]>rang[tata_nod] then aktualizare(tata_nod,nod);
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 rang[i]:=1;
for j:=1 to m do begin
readln(nr,a,b);
case nr of
1 : add(b,a,lda[a]);
2 : if tata[a]=tata[b] then writeln('DA')
else writeln('NU');
end;
end;
close(input);
close(output);
end.