Count Connected Components
There is an undirected graph with n nodes. There is also an edges array, where edges[i] = [a, b] means that there is an edge between node a and node b in the graph.
Return the total number of connected components in that graph.
Example 1:
Input:
n=3
edges=[[0,1], [0,2]]
Output:
1
Example 2:
Input:
n=6
edges=[[0,1], [1,2], [2,3], [4,5]]
Output:
2
Constraints:
1 <= n <= 100
0 <= edges.length <= n * (n - 1) / 2
Solution
All we need to do is recording whether a node has been visited and keep applying DFS on unvisited nodes. A connected component will all be marked as visited in one-time DFS so we just need to count how many times of DFS we have launched.
Code
class Solution:
def countComponents(self, n: int, edges: List[List[int]]) -> int:
vis_flag = [False] * n
graph_map = {i: [] for i in range(n)}
for edge in edges:
graph_map[edge[0]].append(edge[1])
graph_map[edge[1]].append(edge[0])
def dfs(node):
vis_flag[node] = True
for nxt in graph_map[node]:
if not vis_flag[nxt]:
dfs(nxt)
answer = 0
for i in range(n):
if not vis_flag[i]:
dfs(i)
answer += 1
return answer
1362

被折叠的 条评论
为什么被折叠?



