Guest User

Untitled

a guest
Oct 27th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.82 KB | None | 0 0
  1. class Family:
  2.     def __init__(self, id):
  3.         self.__id = id
  4.         self.__parents = []
  5.         self.__children = []
  6.     def getParents(self):
  7.         return self.__parents
  8.     def getId(self):
  9.         return self.__id
  10.     def addParent(self, parent):
  11.         self.__parents = set(parent.getParents()) | set(self.__parents)
  12.         self.__parents = list(set([parent]) | self.__parents)
  13.     def distance(self, guest):
  14.         sameParents = list(set(self.getParents()) & set(guest.getParents()))
  15.         try:
  16.             sameParent = sameParents[0]
  17.         except IndexError:
  18.             """TOP"""
  19.             return abs(len(self.getParents()) - len(guest.getParents()))
  20.         for i in sameParents:
  21.             if len(i.getParents()) > len(sameParent.getParents()):
  22.                 sameParent = i
  23.         return abs(len(self.getParents()) - len(sameParent.getParents())) + abs(len(guest.getParents()) - len(sameParent.getParents()))
  24.     def refresh(self):
  25.         for i in self.getParents():
  26.             self.addParent(i)
  27.  
  28. def main():
  29.     memberCount = int(input())
  30.     families = []
  31.     commandCount = memberCount - 1
  32.     while (memberCount > 0):
  33.         families.append(Family(len(families)))
  34.         memberCount -= 1
  35.     while (commandCount > 0):
  36.         command = [int(i) for i in input().split(" ")]
  37.         families[command[1]].addParent(families[command[0]])
  38.         commandCount -= 1
  39.     for i in families:
  40.         i.refresh()
  41.     maxDistance = 0
  42.     for mainIndex in list(range(len(families) - 1)):
  43.         guestIndex = mainIndex + 1
  44.         while(guestIndex < len(families)):
  45.             if families[mainIndex].distance(families[guestIndex]) > maxDistance:
  46.                 maxDistance = families[mainIndex].distance(families[guestIndex])
  47.             guestIndex += 1
  48.     print(maxDistance)
  49. main()
Advertisement
Add Comment
Please, Sign In to add comment