class UF(): def __init__(self, N): self._parent=[n for n in range(0, N)] self._size=[1] * N def find_root(self, x): if self._parent[x]==x:return x self._parent[x]=self.find_root(self._parent[x]) return self._parent[x] def unite(self, x, y): gx=self.find_root(x) gy=self.find_root(y) if gx==gy:return if self._size[gx]Y: rx=UFa.find_root(x-1) ry=UFa.find_root(y-1) for j in range(len(member[ry])): ans[member[ry][j]]=0 UFa.unite(x-1,y-1) r=UFa.find_root(x-1) member[r]=member[rx]+member[ry] else: rx=UFa.find_root(x-1) ry=UFa.find_root(y-1) for j in range(len(member[rx])): ans[member[rx][j]]=0 UFa.unite(x-1,y-1) r=UFa.find_root(x-1) member[r]=member[rx]+member[ry] for i in range(n): print(ans[i])