문제.
풀이.
이분 그래프는 연결된 정점마다 색을 칠한다고 하면 연결된 정점 끼리의 색이 서로 달라야한다.
즉 예를 들어 (1,3), (2,3) 이 연결되어 있다면 1은 빨간색 3은 파랑색 2는 빨간색 이런식으로 연결된 정점끼리의 색이 달라야한다.
풀이.
from collections import deque
def bfs(n):
visited[n] = 1;
queue=deque()
queue.append(n)
while queue:
x = queue.popleft()
for i in matrix[x]:
if visited[i] == 0:
visited[i] = -visited[x]
queue.append(i)
else:
if visited[i] == visited[x]:
return False
return True
tc = int(sys.stdin.readline())
for i in range(tc):
v, e = map(int, sys.stdin.readline().split())
x, y = [], []
visited = [0] * (v+1)
matrix = [[] for r in range(v+1)]
for j in range(e):
x, y = map(int, sys.stdin.readline().split())
matrix[x].append(y)
matrix[y].append(x)
result = 'YES'
for j in range(1, v+1):
if visited[j] == 0:
if not bfs(j):
result = 'NO'
break
print(result)
'프로그래밍 > 백준' 카테고리의 다른 글
백준 1504 특정 최단 경로 - 파이썬 (0) | 2021.07.23 |
---|---|
백준 1753 최단경로 - 파이썬 (0) | 2021.07.23 |
백준 7562 나이트의 이동 - 파이썬 (0) | 2021.07.22 |
백준 1697 숨바꼭질 - 파이썬 (0) | 2021.07.21 |
백준 7569 토마토 - 파이썬 (0) | 2021.07.21 |