12_pipes.py 735 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/env python3
  2. import sys
  3. def parse(f):
  4. graph = []
  5. for i, line in enumerate(f):
  6. left, right = line.rstrip().split(' <-> ')
  7. assert int(left) == i
  8. graph.append([int(nb) for nb in right.split(', ')])
  9. return graph
  10. def find_groups(graph):
  11. def dfs(i, group):
  12. groups[i] = group
  13. for nb in graph[i]:
  14. if groups[nb] is None:
  15. dfs(nb, group)
  16. groups = [None] * len(graph)
  17. group = 0
  18. for start, known_group in enumerate(groups):
  19. if known_group is None:
  20. dfs(start, group)
  21. group += 1
  22. return groups
  23. groups = find_groups(parse(sys.stdin))
  24. print(sum(1 for g in groups if g == groups[0]))
  25. print(len(set(groups)))