Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数
来源:互联网 发布:速达 sqlserver未安装 编辑:程序博客网 时间:2024/05/16 18:19
Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), write a function to find the number of connected components in an undirected graph.
Example 1:
0 3
| |
1 --- 2 4
Given n = 5 and edges = [[0, 1], [1, 2], [3, 4]], return 2.
Example 2:
0 4
| |
1 --- 2 --- 3
Given n = 5 and edges = [[0, 1], [1, 2], [2, 3], [3, 4]], return 1.
Note:
You can assume that no duplicate edges will appear in edges. Since all edges are undirected, [0, 1] is the same as [1, 0] and thus will not appear together in edges.
1.用dfs
class Solution {public:int countComponents(int n, vector<pair<int, int> >& edges) {vector<vector<int> > nl(n);for (auto p : edges){nl[p.first].push_back(p.second);nl[p.second].push_back(p.first);}vector<int> visited(n, false);int cnt = 0;for (int i = 0; i < n; i++){if (!visited[i]){cnt++;dfs(nl, visited, i);}}return cnt;}private:void dfs(vector<vector<int> >& nl, vector<int>&visited, int i){if (visited[i]) return;visited[i] = true;for (int v : nl[i]){if (!visited[v]){dfs(nl, visited, v);}}}};
2.用并查集
class Solution {public:int countComponents(int n, vector<pair<int, int> >& edges) {vector<int> s(n);for (int i = 0; i < n; i++){s[i] = i;}for (auto e : edges){int ra = find(s, e.first);int rb = find(s, e.second);if (ra != rb){s[ra] = rb;}}int cnt = 0;for (int i = 0; i < n; i++){if (s[i] == i){cnt++;}}return cnt;}private:int find(vector<int>&s, int x){int r = x;while (r != s[r]){r = s[r];}int j = x;while (s[j] != j){int tmp = s[j];s[j] = r;j = tmp;}return r;}};
0 0
- Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数
- LeetCode 323. Number of Connected Components in an Undirected Graph(连通分量)
- [leetcode323]Number of Connected Components in an Undirected Graph
- LeetCode 323. Number of Connected Components in an Undirected Graph
- leetcode Number of Connected Components in an Undirected Graph
- Number of Connected Components in an Undirected Graph
- Leetcode 323. Number of Connected Components in an Undirected Graph
- LeetCode 323. Number of Connected Components in an Undirected Graph
- LeetCode 323. Number of Connected Components in an Undirected Graph
- Leetcode 323. Number of Connected Components in an Undirected Graph
- No323. Number of Connected Components in an Undirected Graph
- 323. Number of Connected Components in an Undirected Graph
- leetcode323. Number of Connected Components in an Undirected Graph
- [leetcode] 323. Number of Connected Components in an Undirected Graph 解题报告
- [Leetcode] 323. Number of Connected Components in an Undirected Graph 解题报告
- 【LintCode】在无向图中找出各极大连通子图 Find the Connected Component in the Undirected Graph
- Sicily 1002. connected components in undirected graph
- Connected Component in Undirected Graph
- android studio jni.h 红色报错
- 人生第一场SRM SRM695 Div.2
- MFC显示图片
- 定时器setInterval,setTimeout
- Linux VMnet Adapter无法启动的解决办法
- Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数
- LinearLayout android:divider属性
- 基于XMPP协议的及时通讯
- Single Round Match 695
- JNI.h文件浅析
- 抖动文字
- 【C语言】浮点数的上溢下溢
- C#生成二维码名片
- 2016腾讯android面试题