Advertisement
Guest User

Untitled

a guest
Oct 13th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. import sys
  2.  
  3.  
  4. def deepFirstSearch(V, i, distance):
  5. for j in range(len(V[i][1])):
  6. vertex = V[i][1][j]
  7. if V[vertex - 1][0] == 0:
  8. V[vertex - 1][0] = 2
  9. V[vertex - 1][2] = distance + 1
  10. deepFirstSearch(V, vertex - 1, distance + 1)
  11.  
  12.  
  13. def isBipartite(V, E):
  14. for i in range(len(V)):
  15. if V[i][0] == 0:
  16. V[i][0] = 1
  17. deepFirstSearch(V, i, 0)
  18.  
  19. for i in range(len(E)):
  20. v1, v2 = E[i]
  21. if V[v1 - 1][2] % 2 == V[v2 - 1][2] % 2:
  22. return 'NO'
  23. return 'YES'
  24.  
  25.  
  26. reader = sys.stdin
  27. vertexCount, edgesCount = tuple(map(int, next(reader).strip().split()))
  28. V = []
  29. E = []
  30. for i in range(vertexCount):
  31. V.append([0, [], 0])
  32. for i in range(edgesCount):
  33. v1, v2 = tuple(map(int, next(reader).strip().split()))
  34. E.append((v1, v2))
  35. V[v1 - 1][1].append(v2)
  36. V[v2 - 1][1].append(v1)
  37.  
  38. print(isBipartite(V, E))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement