Skip to main content

Solution to 1197 - The Suspects in Python 3.


This is the solution to this UVa problem.

Note: In this problem you need to be very careful with the update of the rank list




Code


class uf:
 def __init__(self,numnodes):
  self.r = [1] * (numnodes)
  self.p = []
  for i in range(n):
   self.p.append(i)
 
 def j(self,a,b):
  if a == b:
   return
  a=self.root(a)
  b=self.root(b)
  if a == b:
   return
  if self.r[a] > self.r[b]:
   self.r[a]+=self.r[b]
   self.p[b]= self.p[a]
  else :
   self.r[b]+=self.r[a]
   self.p[a] = self.p[b]
  
 def root(self,a): 
  while True:
   if self.p[a]==a:
    break
   else:
    self.p[a] =self.p[self.p[a]]
    a = self.p[a]
  return a
 def con(self,a,b):
  if self.root(a) == self.root(b):
   return True
  else:
   return False
    






while True:
 n,m=input().split(' ')
 n=int(n)
 m=int(m)
 if n==0 and m==0:
  break
 muf=uf(n)
 while m!=0:
  m-=1
  g=[int(i) for i in input().split(' ')[1:]]
  for i,j in zip(g[:-1],g[1:]):
   muf.j(i,j)
 print(muf.r[muf.root(0)])
  
  
 
 
   
  
 
 
  
  



Comments

Popular posts from this blog