SDUT-1488-数据结构实验:连通分量个数
来源:互联网 发布:c语言编译器哪个好 编辑:程序博客网 时间:2024/05/16 08:43
Problem Description
在无向图中,如果从顶点vi到顶点vj有路径,则称vi和vj连通。如果图中任意两个顶点之间都连通,则称该图为连通图,
否则,称该图为非连通图,则其中的极大连通子图称为连通分量,这里所谓的极大是指子图中包含的顶点个数极大。例如:一个无向图有5个顶点,1-3-5是连通的,2是连通的,4是连通的,则这个无向图有3个连通分量。
Input
第一行是一个整数T,表示有T组测试样例(0 < T <= 50)。每个测试样例开始一行包括两个整数N,M,(0 < N <= 20,0 <= M <= 200)
分别代表N个顶点,和M条边。下面的M行,每行有两个整数u,v,顶点u和顶点v相连。
Output
每行一个整数,连通分量个数。
Example Input
2
3 1
1 2
3 2
3 2
1 2
Example Output
2
1
最小生成树问题
#include <iostream>#include <cstdio>#include <cstring>#define MAX 20005using namespace std;int f[200];int n,m;struct node{ int u; int v; int w;}e[505];int find(int p){ if(p == f[p]) return p; else return f[p] = find(f[p]);}int join(int v,int u){ int t1,t2; t1 = find(v); t2 = find(u); if(t1 != t2) { f[t2] = t1; return 1; } return 0;}int main(){ int T; int i; scanf("%d",&T); while(T--) { int count = 0,num = 0; scanf("%d%d",&n,&m); for(i=1;i<=m;i++) { scanf("%d%d",&e[i].u,&e[i].v); e[i].w = 1; } for(i=1;i<=n;i++) f[i] = i; for(i=1;i<=m;i++) { if(join(e[i].u,e[i].v)) count ++; } for(i=1;i<=n;i++) { if(f[i] == i) num++; } printf("%d\n",num); /*for(i=1;i<=n;i++) printf("%d ",f[i]); printf("\n");*/ } return 0;}
阅读全文
0 0
- SDUT 1488 数据结构实验:连通分量个数
- SDUT 1488 数据结构实验:连通分量个数
- SDUT-1488-数据结构实验:连通分量个数
- sdut oj1488 数据结构实验:连通分量个数
- <sdut-ACM>数据结构实验:连通分量个数
- SDUT-数据结构实验:连通分量个数
- SDUT OJ 1488数据结构实验:连通分量个数
- SDUT 1488 数据结构实验:连通分量个数(无向图的连通)
- 1488 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数1488
- sdut 1488 数据结构实验:连通分量个数(并查集)
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- Google三驾马车:GFS、MapReduce和Bigtable
- 学习api的使用方式
- 数据分析--概率--002
- RGB和YCbCr颜色空间的转换及优化算法
- Spring 事务管理概要介绍
- SDUT-1488-数据结构实验:连通分量个数
- 跨域请求CORS
- Java中的线程
- html浅析
- 用 Go 构建一个区块链 -- Part 4: 交易(1)
- 求1~10的阶乘的和
- helm的使用
- hdu5492Find a path dp
- 如何更新os系统的java