Skip to content

Commit 3af7236

Browse files
author
wuduhren
committed
updates
1 parent 02d6d3b commit 3af7236

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution:
2+
def countComponents(self, N: int, edges: List[List[int]]) -> int:
3+
def union(n1, n2):
4+
p1 = find(n1)
5+
p2 = find(n2)
6+
if p1==p2:
7+
return
8+
elif p1<p2:
9+
parents[p2] = p1
10+
else:
11+
parents[p1] = p2
12+
13+
def find(n):
14+
p = parents[n]
15+
while p!=parents[p]: p = find(p)
16+
parents[n] = p
17+
return p
18+
19+
parents = {n:n for n in range(N)}
20+
for n1, n2 in edges: union(n1, n2)
21+
22+
groups = set()
23+
for n in range(N): groups.add(find(n))
24+
25+
return len(groups)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Solution:
2+
def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:
3+
def union(n1, n2):
4+
p1 = find(n1)
5+
p2 = find(n2)
6+
7+
if p1==p2:
8+
return False #union failed, already united.
9+
elif p1<p2:
10+
roots[p2] = p1
11+
else:
12+
roots[p1] = p2
13+
14+
return True #union success
15+
16+
def find(n):
17+
if n not in roots:
18+
roots[n] = n
19+
return n
20+
21+
p = roots[n]
22+
while p!=roots[p]:
23+
p = find(p)
24+
roots[n] = p
25+
return p
26+
27+
roots = {}
28+
29+
for n1, n2 in edges:
30+
if not union(n1, n2): return (n1, n2)
31+
32+
return 'ERROR'

0 commit comments

Comments
 (0)