连通分量个数
来源:互联网 发布:python技术手册 编辑:程序博客网 时间:2024/05/21 17:24
在无向图中,如果从顶点vi到顶点vj有路径,则称vi和vj连通。如果图中任意两个顶点之间都连通,则称该图为连通图,
否则,称该图为非连通图,则其中的极大连通子图称为连通分量,这里所谓的极大是指子图中包含的顶点个数极大。
例如:一个无向图有5个顶点,1-3-5是连通的,2是连通的,4是连通的,则这个无向图有3个连通分量。
求连通分量的个数当然也可以用并查集
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>const int N = 210;const int maxn = 2000;const int maxm = 201010;const int inf = 1e8;#define MIN INT_MIN#define MAX 1e6#define LL long long#define init(a) memset(a,0,sizeof(a))#define FOR(i,a,b) for(int i = a;i<b;i++)#define max(a,b) (a>b)?(a):(b)#define min(a,b) (a>b)?(b):(a)using namespace std;int ma[50][50];bool vis[50];int num = 0,n;void DFS(int k){ vis[k] = 1; FOR(i,1,n+1) { if(ma[k][i] && !vis[i]) { DFS(i); } }}int main(){ int t,m,a,b; scanf("%d",&t); while(t-- && scanf("%d%d",&n,&m)) { init(ma);init(vis); num = 0; FOR(i,0,m) { scanf("%d%d",&a,&b); ma[a][b] = ma[b][a] = 1; } FOR(i,1,n+1) { if(!vis[i]) { DFS(i); num++; } } cout<<num<<endl; } return 0;}
0 0
- 连通分量个数
- hdu4496 求连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- linux下 监控USB插入事件
- 基于Mailslot(邮槽)技术的日志服务程序的实现
- visual c++ 2012入门经典 练习(第五章)
- CycleBarrier使用说明
- NYOJ-交换输出
- 连通分量个数
- 让你提前认识软件开发(50):软件需求
- Nginx 做系统的前端反向proxy
- UDP实现可靠数据传输
- wpf 使用 storyboard 设置 控件 移动动画
- objective-c中是如何实现线程同步的?
- Cocos2d-HTML5游戏引擎作者林顺:HTML5来袭,准备好了吗
- thinkphp syntax error, unexpected ')', expecting T_VARIABLE or '$'
- 双目运算符重载