DFS 풀이

import sys
sys.setrecursionlimit(1000000)

def dfs(v,node):
    
    global visited
    global graph
    visited[v] = node
    
    for i in graph[v]:
        
        if visited[i] == 0:
    
            dfs(i,-node)        

k = int(input())

for _ in range(k):
    
    n,m = map(int,sys.stdin.readline().split())
    graph = [[] for i in range(n+1)]
    visited = [0] * (n+1)
    for i in range(m):
        node1,node2 = map(int,sys.stdin.readline().split())
        graph[node1].append(node2)
        graph[node2].append(node1)
    
    for i in range(1, n + 1):
        if visited[i] == 0:
            dfs(i,1)
    
    for i in range(1, n + 1):
        if visited[i] == 0:
            dfs(i,1)
    
    result = True
    for i in range(1,n+1):
        for j in graph[i]:
            
            if visited[i] == visited[j] * -1:
                result = True
            else :
                result = False
                break
        if result ==False :
            break
    
    if result == True:
        print("YES")
    else :
        print("NO")

BFS 풀이

from collections import deque
import sys

def bfs(v):
    
    queue = deque()
    queue.append(v)
    visited[v] = 1
    
    while queue :

        v = queue.popleft()

        for i in graph[v]:
            
            if visited[i] == 0 :
                
                queue.append(i)
                visited[i] = -visited[v]

k = int(input())
for _ in range(k):
    n,m = map(int,sys.stdin.readline().split())
    graph = [[] for i in range(n+1)]
    visited = [0] * (n+1)
    for i in range(m):
        node1,node2 = map(int,sys.stdin.readline().split())
        graph[node1].append(node2)
        graph[node2].append(node1)
                       
    for i in range(1,n+1):
        if visited[i] == 0 :
            bfs(i)
    
    result = True
    for i in range(1,n+1):
        for j in graph[i]:
                
            if visited[i] == visited[j] * -1:
                result = True
            else :
                result = False
                break
        if result ==False :
            break
        
    if result == True:
        print("YES")
    else :
        print("NO")

Categories:

Updated: