Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

32 linhas
544B

  1. import collections
  2. import sys
  3. # build
  4. text = sys.stdin.read()
  5. directed = {}
  6. undirected = collections.defaultdict(set)
  7. for line in text.splitlines():
  8. A, B = line.split(')')
  9. directed[B] = A
  10. undirected[B].add(A)
  11. undirected[A].add(B)
  12. # pop stack
  13. i = 0
  14. for k in directed:
  15. while k in directed:
  16. k = directed[k]
  17. i += 1
  18. print(i)
  19. # bfs
  20. hops = 0
  21. seen = set()
  22. edge = {'YOU'}
  23. while 'SAN' not in edge:
  24. hops += 1
  25. seen |= edge
  26. edge = {new for node in edge for new in undirected[node]} - seen
  27. print(hops - 2)