Pagini recente » Diferente pentru utilizator/filip.mihalut intre reviziile 40 si 45 | Cod sursa (job #2712359) | Profil usureluflorian | Autentificare | Cod sursa (job #457519)
Cod sursa(job #457519)
type tomb=array [1..100000] of longint;
var n,m,i,j,x,y,kod,a,b,c,d:longint;
v:tomb;
rang:tomb;
f,g:text;
begin
assign(f,'disjoint.in');
reset(f);
assign(g,'disjoint.out');
rewrite(g);
readln(f,n,m);
for i:=1 to n do
v[i]:=i;
for i:=1 to m do
begin
readln(f,kod,x,y);
if kod=1
then begin
if rang[v[x]]<rang[v[y]]
then
begin
a:=x;
while (a<>v[a]) do
a:=v[a];
c:=y;
while(c<>v[c]) do
c:=v[c];
v[a]:=v[c];
rang[c]:=rang[c]+1;
end
else
begin
a:=x;
while a<>v[a] do
a:=v[a];
c:=y;
while c<>v[c] do
c:=v[c];
v[c]:=v[a];
rang[a]:=rang[a]+1;
end;
end;
if kod=2
then
begin
a:=x;
while a<>v[a]
do
a:=v[a];
while x<>v[x]
do begin
b:=v[x];
v[x]:=a;
x:=b;
end;
c:=y;
while c<>v[c] do
c:=v[c];
while x<>v[x] do
begin
d:=v[x];
v[x]:=c;
x:=d;
end;
if a=c
then
writeln(g,'DA')
else
writeln(g,'NU');
end;
end;
close(f);
close(g);
end.