Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.90 KB | None | 0 0
  1. def get_children(graph,v):
  2.     return {i for i in range(len(graph[v])) if graph[v][i] == 1}
  3.  
  4. def dfs(graph ,v, visited = set()):
  5.     visited.add(v)
  6.     for u in get_children(graph,v) - visited:
  7.         dfs(graph,u,visited)
  8.     return visited
  9. n,k = map(int, input().split())
  10. g1 = [[0] * n for i in range(n)]
  11. g2 = [[0] * n for i in range(n)]
  12.  
  13.  
  14. for i in range(k):
  15.     oper, a,b  = input().split()
  16.     a = int(a) -1
  17.     b = int(b) - 1
  18.     if oper == '+':
  19.         g1[a][b] = 1
  20.         g1[b][a] = 1
  21.         g2[a][b] = 1
  22.         g2[b][a] = 1
  23.     elif oper == '-':
  24.         g1[a][b] = 1
  25.         g1[b][a] = 1
  26.         g2[a][b] = 0
  27.         g2[b][a] = 0
  28.     else:
  29.         dfs1 = dfs(g1,a)
  30.         dfs2 = dfs(g2,a)
  31.         if a in dfs1 and b in dfs1:
  32.             if a in dfs2 and b in dfs2:
  33.                 print('-')
  34.             else:
  35.                 print('+')
  36.         else:
  37.             print('?')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement