Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import collections
- graph = {}
- size = int(raw_input())
- for i in range(size-1):
- inp = raw_input()
- if not inp: break
- [down, up] = inp.split(' ')
- if (graph.get(up) is None):
- graph[up] = []
- if (graph.get(down) is None):
- graph[down] = []
- current = graph.get(up)
- current.append(down)
- graph[up] = current
- def breadth_first_search(graph, root):
- level = 1
- human_level = {}
- last_level = 1
- visited, queue = set(), collections.deque([root])
- while queue:
- vertex = queue.popleft()
- for neighbour in graph[vertex]:
- if neighbour not in visited:
- if (last_level > level):
- level += 1
- visited.add(neighbour)
- queue.append(neighbour)
- human_level[neighbour] = level
- last_level = level
- last_level += 1
- return human_level
- human_level = breadth_first_search(graph, 'X')
- human_level['X'] = 0
- for human in sorted(human_level):
- print(str(human) + ' ' + str(human_level[human]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement