Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- def deepFirstSearch(V, i, distance):
- for j in range(len(V[i][1])):
- vertex = V[i][1][j]
- if V[vertex - 1][0] == 0:
- V[vertex - 1][0] = 2
- V[vertex - 1][2] = distance + 1
- deepFirstSearch(V, vertex - 1, distance + 1)
- def isBipartite(V, E):
- for i in range(len(V)):
- if V[i][0] == 0:
- V[i][0] = 1
- deepFirstSearch(V, i, 0)
- for i in range(len(E)):
- v1, v2 = E[i]
- if V[v1 - 1][2] % 2 == V[v2 - 1][2] % 2:
- return 'NO'
- return 'YES'
- reader = sys.stdin
- vertexCount, edgesCount = tuple(map(int, next(reader).strip().split()))
- V = []
- E = []
- for i in range(vertexCount):
- V.append([0, [], 0])
- for i in range(edgesCount):
- v1, v2 = tuple(map(int, next(reader).strip().split()))
- E.append((v1, v2))
- V[v1 - 1][1].append(v2)
- V[v2 - 1][1].append(v1)
- print(isBipartite(V, E))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement