-
求连通分量
Time Limit:1000MS Memory Limit:65536K Total Submit:233 Accepted:132
Description
求一个图的连通分量
Input
n 顶点数(<=100) 边
Output
连通分量
Sample Input
5 1 2 3 4 2 3 0 0Sample Output
4
-
var map:array[0..1001,0..1001]of longint; a,b,dis:array[0..1001]of longint; i,j,n,s,ans,max,la1,la2:longint; procedure dp(dep:longint); var i:longint; begin for i:=1 to n do if dis[i]=0 then if map[dep,i]<>0 then begin dis[i]:=1; inc(max); dp(i); end; end; begin la1:=1; la2:=1; readln(n); while (la1<>0)and(la2<>0) do//因为是以零结束,所以用while读入 begin inc(i); read(la1,la2); if (la1<>0)and(la2<>0) then begin a[i]:=la1; b[i]:=la2; end; readln; end; s:=i-1;//因为会把零的那次算上,所以要减一 for i:=1 to s do begin la1:=a[i]; la2:=b[i]; map[la1,la2]:=1; map[la2,la1]:=1; end; -
{建立一个dp的表,用dp} -
for i:=1 to n do begin max:=0; dp(i); if ans<max then ans:=max; end; write(ans); end.
本文介绍了一个求解无向图中连通分量数量的算法实现,通过深度优先搜索遍历图中的每个节点来确定连通分量的最大数量。示例输入包括节点数、边数及连接关系,输出则为最大连通分量的数量。
848

被折叠的 条评论
为什么被折叠?



