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())