题目描述:
给定编号从 0 到 n-1 的 n 个节点和一个无向边列表(每条边都是一对节点),请编写一个函数来计算无向图中连通分量的数目。
示例 1:
输入: n = 5 和 edges = [[0, 1], [1, 2], [3, 4]]
0 3
| |
1 --- 2 4
输出: 2
示例 2:
输入: n = 5 和 edges = [[0, 1], [1, 2], [2, 3], [3, 4]]
0 4
| |
1 --- 2 --- 3
输出: 1
注意:
你可以假设在 edges 中不会出现重复的边。而且由于所以的边都是无向边,[0, 1] 与 [1, 0] 相同,所以它们不会同时在 edges 中出现。
方法1:
主要思路:
(1)先建立邻接图,再直接在邻接图中进行深度搜索;
(2)每次搜索都获得一个连通分量,并将已经获得连通分量标识,后面不再遍历该连通分量中的结点;
(3)统计进行了几次深度搜索即可;
class Solution {
public:
void dfs(vector<vector<int>>&graph,vector<bool>&sign,