Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. import collections
  2.  
  3. class Graph(object):
  4. def __init__(self, numNodes):
  5. self.n = numNodes
  6. self.connected = {}
  7.  
  8. def connect(self, node1, node2):
  9. if node1 not in self.connected:
  10. self.connected[node1] = set()
  11. if node2 not in self.connected:
  12. self.connected[node2] = set()
  13. self.connected[node1].add(node2)
  14. self.connected[node2].add(node1)
  15.  
  16. def find_all_distances(self, start):
  17. visited = [False for _ in range(self.n)]
  18. distances = [-1 for _ in range(self.n)]
  19. queue = collections.deque()
  20. queue.append(start)
  21. visited[start] = True
  22. distances[start] = 0
  23.  
  24. while len(queue):
  25. popped = queue.popleft()
  26. for path in self.connected[popped]:
  27. if not visited[path]:
  28. visited[path] = True
  29. distances[path] = distances[popped]+6
  30. queue.append(path)
  31.  
  32. print " ".join([str(dist) for dist in distances if dist != 0])
  33.  
  34. t = input()
  35. for i in range(t):
  36. n,m = [int(x) for x in raw_input().split()]
  37. graph = Graph(n)
  38. for i in xrange(m):
  39. x,y = [int(x) for x in raw_input().split()]
  40. graph.connect(x-1,y-1)
  41. s = input()
  42. graph.find_all_distances(s-1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement