n= int(input()) ls= for i in range(n): ls.append() for i in range(2,n+1): j=int(input()) ls[j-1].append(i) for i in ls: for j in i: if ls[j-1]: i.remove(j) ls = list(filter(().__ne__, ls)) if len(min(ls))<3: print('No') else: print('Yes')
Basically, I create a nested list where I store each node's child vertexes in different elements(eg: indexes of the child vertexes of the root node are in the 0th element/ the first element) of the list. Then, I remove the index of the child vertex (if that child vertex has further children) from the element associated with the parent vertex.
For eg: if 1 had 3 children, 2 3 and 4, and if 2 had further children, then we remove 2 from the element associated with the root, i.e. the 0th element in the list.
so before change -> [[2,3,4],[5,6,7]] after change -> [[3,4],[5,6,7]]
I'd appreciate the help especially since I'm a noob at coding :)