Pagini recente » Cod sursa (job #605835) | Cod sursa (job #2682793) | Cod sursa (job #2395991) | Cod sursa (job #2964931) | Cod sursa (job #294294)
Cod sursa(job #294294)
program disjoint;
type lista = ^articol;
articol = record
lungime:longint;
lider:lista;
end;
var a:array [1..100000] of lista;
i,m,n,k,p,op:longint;
xp,xk:lista;
procedure conectare(p,k:longint);
begin
xp:=a[k];
xk:=a[p];
while xp<>xp^.lider do
xp:=xp^.lider;
while xk<>xk^.lider do
xk:=xk^.lider;
xp^.lider:=xk;
xk^.lungime:=xk^.lungime+xp^.lungime;
end;
begin
assign(input,'disjoint.in');
assign(output,'disjoint.out');
reset(input);
rewrite(output);
readln(n,m);
for i:=1 to n do
begin
new(a[i]);
a[i]^.lider:=a[i];
a[i]^.lungime:=1;
end;
for i:=1 to m do
begin
readln(op,k,p);
if op = 1 then
begin
if a[k]^.lungime>a[p]^.lungime then
conectare(p,k)
else
conectare(k,p);
end
else
begin
xp:=a[k];
xk:=a[p];
while xp<>xp^.lider do
xp:=xp^.lider;
while xk<>xk^.lider do
xk:=xk^.lider;
if xp^.lider = xk^.lider then
writeln('DA')
else
writeln('NU');
end;
end;
close(input);
close(output);
end.