

- 이분 그래프를 판별하기 위해서, depth마다 color 값을 1과 -1로 번갈아가면서 할당해줌
-> 만약 이전 depth의 node와 현재 depth의 node가 같은 color라면, print("NO") 
- 처음에 Recursion error가 발생해서 "sys.setrecursionlimit(1000000)"를 추가해줌
 
- 메모리 초과가 발생했는데, 이는 pypy3 말고 python3로 제출하니까 해결됨
 
- 모든 노드들을 순회하면서 color가 번갈아가면서 할당되는 지 확인해주어야함
-> for문을 돌 때, visit[x] == 0인 경우만 dfs순회를 하면 시간을 단축할 수 있음 
import sys
sys.setrecursionlimit(1000000)
def dfs(start, color):
        global flag
        visit[start] = color
        for i in range(len(adjacent[start])):
            if visit[adjacent[start][i]] == 0:
                dfs(adjacent[start][i], -color) 
                if visit[start] == visit[adjacent[start][i]]:
                    flag = 1
                    return
            elif visit[start] == visit[adjacent[start][i]]:
                flag = 1
                return
K = int(input())
for k in range(K):
    tmp = list(map(int, sys.stdin.readline()[:-1].split(' ')))
    N = tmp[0]; M = tmp[1]
    adjacent = [[] for _ in range(N+1)]
    for _ in range(M):
        t0, t1 = map(int, sys.stdin.readline()[:-1].split(' '))
        adjacent[t0].append(t1)
        adjacent[t1].append(t0)
    flag = 0
    visit = [0] * (N+1)
    for x in range(1, N+1):
        if visit[x] == 0:
            dfs(x, 1)
    if flag == 1:
        print("NO")
    else:
        print("YES")