Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Family:
- def __init__(self, id):
- self.__id = id
- self.__parents = []
- self.__children = []
- def getParents(self):
- return self.__parents
- def getId(self):
- return self.__id
- def addParent(self, parent):
- self.__parents = set(parent.getParents()) | set(self.__parents)
- self.__parents = list(set([parent]) | self.__parents)
- def distance(self, guest):
- sameParents = list(set(self.getParents()) & set(guest.getParents()))
- try:
- sameParent = sameParents[0]
- except IndexError:
- """TOP"""
- return abs(len(self.getParents()) - len(guest.getParents()))
- for i in sameParents:
- if len(i.getParents()) > len(sameParent.getParents()):
- sameParent = i
- return abs(len(self.getParents()) - len(sameParent.getParents())) + abs(len(guest.getParents()) - len(sameParent.getParents()))
- def refresh(self):
- for i in self.getParents():
- self.addParent(i)
- def main():
- memberCount = int(input())
- families = []
- commandCount = memberCount - 1
- while (memberCount > 0):
- families.append(Family(len(families)))
- memberCount -= 1
- while (commandCount > 0):
- command = [int(i) for i in input().split(" ")]
- families[command[1]].addParent(families[command[0]])
- commandCount -= 1
- for i in families:
- i.refresh()
- maxDistance = 0
- for mainIndex in list(range(len(families) - 1)):
- guestIndex = mainIndex + 1
- while(guestIndex < len(families)):
- if families[mainIndex].distance(families[guestIndex]) > maxDistance:
- maxDistance = families[mainIndex].distance(families[guestIndex])
- guestIndex += 1
- print(maxDistance)
- main()
Advertisement
Add Comment
Please, Sign In to add comment