[BFS][连通分量]求连通分量
2017-03-23 16:37
183 查看
题目描述
求一个图的连通分量
Input
n 顶点数(<=100)
边(以0 0作为结束标志)
Output
连通分量
(强连通图的连通分量为其本身。如果为非连通图,则连通分量为该图的最大连通子图。)
分析
建一个100*100的布尔矩阵,b[x,y]=true表示x与y连通。同时还要记录该点是否被遍历过
然后遍历时将队尾最大值记录一下就好了~
——
秋名山上行人稀
常有车手赛高低
如今车道仍然在
不见当年老司机
所以给我点点赞呗~
求一个图的连通分量
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; }
——
秋名山上行人稀
常有车手赛高低
如今车道仍然在
不见当年老司机
所以给我点点赞呗~
相关文章推荐
- 4612 warm up tarjan+bfs求树的直径(重边的强连通通分量)忘了写了,今天总结想起来了。
- 强连通分量 求每个连通分量的最小值 hdu 1827
- 通过BFS 和 DFS两种方法找无向图的连通分量
- 有向图的极大强连通分量
- tarjan算法求强连通分量
- (ssl1759)求连通分量
- 模板[有向图的强连通分量] -hdu 3072
- 有向图强连通分量的Tarjan算法和Kosaraju算法
- 连通分量模板:tarjan: 求割点 && 桥 && 缩点 && 强连通分量 && 双连通分量 && LCA(近期公共祖先)
- 有向图的强连通分量
- soj 3134: windy和水星 Stoer-Wagner算法求无向图的最小割集:一个无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集;最小割集当然就权和最小的割集
- 有向图的强连通分量 SCC tarjin算法
- tarjan求强连通分量专题
- 有向图强连通分量 Tarjan算法【java实现】
- 【强连通分量缩点】【拓扑排序】【dp预处理】CDOJ1640 花自飘零水自流,一种相思,两处闲愁。
- POJ1236 Tarjan求强连通分量
- 关于最小生成树中的kruskal算法中判断两个点是否在同一个连通分量的方法总结
- 强连通分量-Tarjan
- 求强连通分量的Tarjan算法[转]
- Targan 算法[有向图强连通分量]