66. Number of Connected Components in an Undirected Graph
Question Link : check here
Givennnodes labeled from0ton - 1and 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
Givenn = 5andedges = [[0, 1], [1, 2], [3, 4]], return2.
Example 2:
0 4
| |
1 --- 2 --- 3
Givenn = 5andedges = [[0, 1], [1, 2], [2, 3], [3, 4]], return1.
Note:
You can assume that no duplicate edges will appear inedges. Since all edges are undirected,[0, 1]is the same as[1, 0]and thus will not appear together inedges.
Solution :
class Solution:
def counComponents(self, n: int, edges : List[List[int]]) -> int:
p = [ i for i in range(n)]
r = [1] * n
def find(n1) :
ans = n1
while ans != p[ans] :
p[ans] = p[p[ans]]
ans = p[ans]
return ans
def union(n1, n2):
p1, p2 = find(n1), find(n2)
if p1==p2:
return 0
if r[p2] > r[p1]:
p[p1] = p2
r[p2] += r[p1]
else:
p[p2] = p1
r[p1] += r[p2]
return 1
ans = n #5 - 1 - 1 - 1 = 2
for n1, n2 in edges:
ans -= union(n1,n2)
return ans
Explaination :
Comments
Post a Comment