You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

p06.py 544B

5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
12345678910111213141516171819202122232425262728293031
  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)