题目:
Description
求一个图的连通分量
Input
n 顶点数(<=100)
边
Output
连通分量
Sample Input
5
1 2
3 4
2 3
0 0
Sample Output
4
作者思路:dfs,从一个点开始搜,如果s>ans then ans:=s;
这道题输入狠毒啊!
代码:
var a:array[0..101,0..101] of shortint;
ans,n,s,i:longint;
f:array[0..101] of boolean;
procedure init;
var i,j,x,y:longint;
begin
read(n);
{for i:=1 to n-1 do
begin
read(x,y);
a[x,y]:=1;
a[y,x]:=1;
end;}
while (x<>0)and(y<>0) do
begin
read(x,y);
a[x,y]:=1;
a[y,x]:=1;
end;
fillchar(f,sizeof(f),true);
end;
procedure dfs(x:longint);
var i:longint;
begin
for i:=1 to n do
if (i<>x)and(a[x,i]=1)and f[i] then
begin
inc(s); if ans<s then ans:=s;
f[i]:=false; f[x]:=false;
dfs(i);
end;
end;
begin
init;
ans:=1;
for i:=1 to n do
if f[i] then
begin
s:=1;
dfs(i);
if s>ans then ans:=s;
end;
write(ans);
end.