백준 1707 - 이분 그래프 (파이썬)

Updated:

Answer

from sys import stdin
from collections import deque

input = stdin.readline

def bfs(start):
    queue = deque([start])
    visited[start] = 1

    while queue:
        a = queue.popleft()

        for i in matrix[a]:
            if visited[i] == 0:
                visited[i] = -visited[a]
                queue.append(i)
            elif visited[i] == visited[a]:
                return False

    return True

for _ in range(int(input())):
    V, E = map(int, input().split())
    
    matrix = [[] for _ in range(V + 1)]
    visited = [0] * (V + 1)
    isTrue = True

    for __ in range(E):
        a, b = map(int, input().split())
        matrix[a].append(b)
        matrix[b].append(a)

    for i in range(1, V + 1):
        if visited[i] == 0:
            if not bfs(i):
                isTrue = False
                break
    
    print("YES" if isTrue else "NO")

Categories:

Updated: