hzCPPOJ

连通分量计数

时间限制:  1 s      内存限制:   128 MB
提交:15     正确:14     分值:98

题目描述

给定一个无向图,计算图中的连通分量个数。

连通分量是指图中任意两个顶点之间都存在路径连接的极大连通子图。

输入

第一行包含两个整数 n, m,分别表示图的顶点数和边数。
接下来 m 行,每行包含两个整数 u, v,表示顶点 u 和顶点 v 之间有一条无向边。

输出

输出一个整数,表示图中的连通分量个数。

样例

样例输入:
6 4 1 2 2 3 4 5 5 6
样例输出:
2
样例输入:
5 4 1 2 2 3 3 4 4 5
样例输出:
1
样例输入:
5 4 1 2 1 3 1 4 1 5
样例输出:
1
样例输入:
6 3 1 2 3 4 5 6
样例输出:
3
样例输入:
1 0
样例输出:
1
样例输入:
5 0
样例输出:
5
样例输入:
4 6 1 2 1 3 1 4 2 3 2 4 3 4
样例输出:
1
样例输入:
8 5 1 2 2 3 4 5 6 7 7 8
样例输出:
3

提示

样例1解释

图中有6个顶点,4条边,形成两个连通分量:

数据范围


算法说明

连通分量计数原理

  1. 初始化:所有顶点标记为未访问

  2. 遍历顶点:对于每个未访问的顶点:

    • 增加连通分量计数

    • 使用DFS或BFS遍历该顶点所在连通分量中的所有顶点

  3. 统计结果:最终的计数即为连通分量个数

关键特性

时间复杂度

空间复杂度

应用场景

  1. 网络连通性:检查计算机网络中的连通状况

  2. 社交网络:分析社交网络中的群体划分

  3. 图像处理:识别图像中的连通区域

  4. 地图导航:确定地图上的连通区域

注意事项

  1. 孤立顶点:单个顶点也是一个连通分量

  2. 无向图:算法针对无向图设计

  3. 顶点编号:题目中顶点编号从1开始

  4. 边界情况:注意n=0或m=0的情况

扩展思考

  1. 如何输出每个连通分量包含的顶点?

  2. 如何判断图是否是连通图?

  3. 在有向图中如何计算强连通分量?

  4. 如何找到最大的连通分量?



提交人

AmberXie

来源/分类