Pagini recente » Cod sursa (job #3041442) | Cod sursa (job #488636) | Cod sursa (job #400064) | Cod sursa (job #1962997) | Cod sursa (job #551395)
Cod sursa(job #551395)
type muchie = ^nod;
nod = record n:longint; a:muchie; end;
var v:array [1..100000] of muchie;
t:array[1..100000] of longint;
chk:array [1..100000] of boolean;
p, r:muchie;
i, j, n, m, sum, x, y, l, k, kk:longint;
f, g:text;
begin
assign (f, 'dfs.in'); reset (f);
assign (g, 'dfs.out'); rewrite (g);
read (f, n, m);
for i := 1 to n do
begin
new (v[i]); v[i]^.n:=0;
end;
for i := 1 to m do
begin
readln (f, x, y); {test readln}
p:=v[x];
l:=p^.n;
p^.n:=p^.n+1;
for j := 1 to l do p:=p^.a;
new(r); r^.n:=y; r^.a:=nil; p^.a:=r;
p:=v[y];
l:=p^.n;
p^.n:=p^.n+1;
for j := 1 to l do p:=p^.a;
new(r); r^.n:=x; r^.a:=nil; p^.a:=r;
end;
i:=0; j:=1;
while i < n do
begin
while chk[j]=true do j := j+1;
sum:=sum+1;
i:=i+1;
chk[j]:=true;
k:=1; kk:=1;
t[1]:=j;
while k <=kk do
begin
p:=v[t[k]];
for l := 1 to v[t[k]]^.n do
begin
p:=p^.a;
if chk[p^.n] = false then
begin
chk[p^.n] := true;
i:=i+1;
kk:=kk+1;
t[kk]:=p^.n;
end;
end;
k:=k+1;
end;
end;
writeln (g, sum);
close (f); close (g);
end.