-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathAvoid Explosion.py
51 lines (40 loc) · 1.27 KB
/
Avoid Explosion.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class Solution:
def avoidExlosion(self, mix, n, danger, m):
#code here
def find(x):
if par[x] != x:
par[x] = find(par[x])
return par[x]
def union(u,v):
u = par[u]
v = par[v]
if (rank[u] > rank[v]):
par[v] = u
elif (rank[u] < rank[v]):
par[u] = v
else:
par[u] = v
rank[v] += 1
# par[find(a)] = find(b)
ans = []
par = [0] * (n+1)
rank = [0] * (n+1)
for i in range(n+1):
par[i] = i
for i in range(n):
x = mix[i][0]
y = mix[i][1]
px,py = find(x),find(y)
boolean = True
for j in range(m):
a,b = danger[j][0],danger[j][1]
pa,pb = find(a),find(b)
if (px == pa and py == pb) or (px == pb and py == pa):
boolean = False
if (boolean):
union(x,y)
if (boolean):
ans.append("Yes")
else:
ans.append("No")
return ans