python

classUF:
    def __init__(self, N):
        self.id = list(range(N))
        self.sz = list(1 fori in range(N))
        self.count = N
    def GetCount(self):
        returnself.count
    def find(self,p):
        whilep!=self.id[p]:
            self.id[p] = self.id[self.id[p]]
            p = self.id[p]
        returnp
    def union(self,p,q):
        i = self.find(p)
        j = self.find(q)
        ifi==j:
            return
        else:
            ifself.sz[i]<self.sz[j]:
                self.id[i] = j
                self.sz[j]+=self.id[i]
            else:
                self.id[j] = i
                self.sz[i]+=self.id[j]
        self.count-=1
     
pairs = int(input())
row = [int(i) fori in input().split()]
uf = UF(pairs)
fori in range(0,pairs):
    m = row[2*i]
    n = row[2*i+1]
    uf.union(int(m/2),int(n/2))
print(pairs-uf.GetCount())
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务