Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.68 KB | None | 0 0
  1. n = int(input())
  2. ids = dict()
  3. adj = [ ]
  4. order = [ ]
  5.  
  6. def read_node_name():
  7.   name = input()
  8.   if not name in ids:
  9.     ids[name] = len(ids)
  10.     adj.append( [] )
  11.   return name
  12.  
  13. for i in range(n):
  14.   name = read_node_name()
  15.   order.append(ids[name])
  16.   k = int(input())
  17.   for j in range(k):
  18.     adj_name = read_node_name()
  19.     adj[ ids[name] ].append( ids[adj_name] )
  20.   input()
  21.  
  22. def loop_exist(x, visited, start):
  23.   if visited[x]:
  24.     return x == start
  25.   visited[x] = True
  26.   result = False
  27.   for v in adj[x]:
  28.     result = result or loop_exist(v, visited, start)
  29.   return result
  30.  
  31. for i in order:
  32.   visited = [False] * n
  33.   print("YES" if loop_exist(i, visited, i) else "NO")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement