数据结构实验:连通分量个数

Time Limit: 1000MS Memory Limit: 65536KB

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

DQE:

本题水,建立图后对图顶点依次进行深度优先搜索,每个顶点开始前判断是否被访问过,若未被访问则为一个新的连通分量起点。
 
 #include <iostream>
#include <cstdio>
using namespace std; #define MVN 110 typedef struct AdjMatrix
{
int w;
char *info;
}AM; typedef struct MGraph
{
int vex[MVN];
AM arc[MVN][MVN];
int vexn,arcn;
}MG; void creat(MG &G)
{
int i,j,k;
for(i=;i<=G.vexn;i++)
for(j=;j<=G.vexn;j++)
G.arc[i][j].w=;
for(k=;k<=G.arcn;k++)
{
scanf("%d %d",&i,&j);
G.arc[i][j].w=G.arc[j][i].w=;
}
} void DFS(MG &G,bool *f,int i)
{
f[i]=true;
int k;
for(k=;k<=G.vexn;k++)
if(G.arc[i][k].w==&&f[k]==false)
DFS(G,f,k);
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
MG G;
scanf("%d %d",&G.vexn,&G.arcn);
creat(G);
bool visited[MVN]={false};
int k,count=;
for(k=;k<=G.vexn;k++)
if(!visited[k])
{
count++;
DFS(G,visited,k);
}
printf("%d\n",count);
}
return ;
} /***************************************************
User name: ***
Result: Accepted
Take time: 0ms
Take Memory: 192KB
Submit time: 2016-11-18 20:16:28
****************************************************/

最新文章

  1. 25、java中观察者模式Observable和Observer
  2. 雾里看花终隔一层——探析package和import
  3. 软件工程课后作业——四则运算Ⅲ(C++)
  4. 生成n对括号的所有合法排列
  5. SQLite支持的SQL数据操作
  6. 嵌入式项目数据解决方案之sqlite
  7. px,em,rem,vw单位在网页和移动端的应用
  8. Luogu P1494 [国家集训队]小Z的袜子
  9. ubuntu16.04获取root权限并用root用户登录
  10. ThinkPHP3.2.3使用分页
  11. linux2.6.30.4内核移植(7)&mdash;&mdash;插入hello world驱动模块
  12. 9.5Django
  13. JMeter中用java修改文件名称
  14. HDU 4405 Aeroplane chess 期望dp
  15. curl命令(测试连接命令)
  16. Spring学习(五)——集成MyBatis
  17. mysql数据类型字段插入空字符串自动填充为0报错
  18. nowcoder(牛客网)普及组模拟赛第一场 解题报告
  19. 标准编译安装(configure make)
  20. 关于.net DateTime 的一些事儿

热门文章

  1. PHP JSON文件解析并获取key、value,判断key是否存在
  2. C#面向对象(四):其他面向对象知识
  3. Python 函数之定义函数
  4. TLD视觉跟踪算法
  5. nginx提示Error: Too many open files的解决办法
  6. POJ2236(并查集入门)
  7. 【转】CSG(Closed Subscriber Group)闭合用户组
  8. HDFS之三:hdfs参数配置详解
  9. 山区建小学(区间DP)
  10. Vue指令学习