您的位置:首页 > 其它

[BFS][连通分量]求连通分量

2017-03-23 16:37 183 查看
题目描述

求一个图的连通分量

Input

n 顶点数(<=100)

边(以0 0作为结束标志)

Output

连通分量

(强连通图的连通分量为其本身。如果为非连通图,则连通分量为该图的最大连通子图。)

分析

建一个100*100的布尔矩阵,b[x,y]=true表示x与y连通。同时还要记录该点是否被遍历过

然后遍历时将队尾最大值记录一下就好了~

#include <iostream>
#include <cstdio>
using namespace std;
int n,x,y,state[101],i,m;
bool b[101],f[101][101];
void bfs(int begin)
{
int h=0,t=1,i;
state[1]=begin;
b[begin]=true;
do
{
h++;
for (i=1;i<=n;i++)
if (f[state[h]][i]&&!b[i])
{
t++;
state[t]=i;
b[i]=true;
}
}
while (h<=t);
if (t>m) m=t;
}
int main()
{
scanf("%d",&n);
while (1)
{
scanf("%d%d",&x,&y);
if (x==0&&y==0) break;
f[x][y]=true;
f[y][x]=true;
}
for (i=1;i<=n;i++) bfs(i);
printf("%d",m);
return 0;
}


——

秋名山上行人稀

常有车手赛高低

如今车道仍然在

不见当年老司机

所以给我点点赞呗~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: