Pagini recente » Cod sursa (job #359326) | Cod sursa (job #1329304) | Cod sursa (job #1474267) | Cod sursa (job #2117894) | Cod sursa (job #401507)
Cod sursa(job #401507)
const infile='disjoint.in';
outfile='disjoint.out';
maxnm=100001;
var tata,niv:array[0..maxnm]of longint;
n,m,x,y:longint;
fi,fo:text;
op:1..2;
procedure unire(x,y:longint);
begin
if(niv[x]>niv[y])then tata[y]:=x
else begin
tata[x]:=y;
if(niv[x]=niv[y])then inc(niv[y]);
end;
end;
function gaseste(i:longint):longint;
var r,y,t:longint;
begin
r:=i;
while(tata[r]<>0)do r:=tata[r];
y:=i;
while(y<>r)do begin t:=tata[y]; tata[y]:=r; y:=t; end;
gaseste:=r;
end;
begin
assign(fi,infile); reset(fi);
assign(fo,outfile); rewrite(fo);
readln(fi,n,m);
while(m>0)do begin
readln(fi,op,x,y); dec(m);
if(op=1)then unire(gaseste(x),gaseste(y))
else if(gaseste(x)=gaseste(y))then writeln(fo,'DA')
else writeln(fo,'Nu');
end;
close(fi); close(fo);
end.