Pagini recente » Cod sursa (job #1058779) | Monitorul de evaluare | Cod sursa (job #2137648) | Cod sursa (job #1955743) | Cod sursa (job #1181454)
program paduri;
type lista=^celula;
celula=record
info:longint;
pred:lista;
end;
var lda:array[1..100000] of lista;
viz:array[0..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 add(v:longint; var p:lista);
var r:lista;
begin
new(r);
r^.info:=v;
r^.pred:=p;
p:=r;
end;
procedure dfs(nod:longint);
var r:lista;
begin
if viz[nod]=1 then ok:=1
else
begin
viz[nod]:=1;
r:=lda[nod];
if r<>nil then
while r<>nil do begin
if viz[r^.info]=0 then dfs(r^.info);
r:=r^.pred;
end;
end;
end;
begin
assign(input,'disjoint.in'); settextbuf(input,b1); reset(input);
assign(output,'disjoint.out'); settextbuf(output,b2); rewrite(output);
readln(n,m);
for j:=1 to m do begin
readln(nr,a,b);
ok:=0;
case nr of
1 : add(a,lda[b]);
2 : begin
if a=b then writeln('DA')
else begin
for i:=1 to n do viz[i]:=0;
dfs(a);
dfs(b);
if ok=0 then writeln('NU')
else
if ok=1 then writeln('DA');
end;
end;
end;
end;
close(input);
close(output);
end.