Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import os
- if not os.environ.get("ONLINE_JUDGE"):
- sys.stdin = open('./in.txt', 'r')
- sys.stdout = open('./out.txt', 'w')
- class DSU:
- def __init__(self, n):
- self.p = [i for i in range(n+1)]
- self.rank = [0]*(n+1)
- self.setsize = [1]*(n+1)
- self.numsets = n
- def findset(self, i):
- if self.p[i] == i:
- return i
- else:
- self.p[i] = self.findset(self.p[i])
- return self.p[i]
- def isSameSet(self, i, j):
- return self.findset(i) == self.findset(j)
- def unionSet(self, i, j):
- if self.isSameSet(i, j):
- return
- x = self.findset(i)
- y = self.findset(j)
- if self.rank[x] > self.rank[y]:
- x, y = y, x
- self.p[x] = y
- if self.rank[x] == self.rank[y]:
- self.rank[y] += 1
- self.setsize[y] += self.setsize[x]
- self.numsets -= 1
- def sizeofset(self, i):
- return self.setsize[self.findset(i)]
- def numDisjointSets(self):
- return self.numsets
- n, m = map(int, input().split())
- dsu = DSU(n)
- for _ in range(m):
- query = list(map(str, input().split()))
- u, v = int(query[1]), int(query[2])
- if query[0] == 'union':
- dsu.unionSet(u, v)
- else:
- if dsu.findset(u) == dsu.findset(v):
- print("YES")
- else:
- print("NO")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement