[백준] 13023 - ABCDE (DFS, 백트래킹)

김영민·2024년 7월 9일
0

코딩테스트

목록 보기
5/32


코드

# 5 4
# 0 1
# 1 2
# 2 3
# 3 4

N,M = map(int,input().split(" "))
friends = [list(map(int,input().split(" "))) for _ in range(M)]

graph = [[] for _ in range(N)]

for a,b in friends:
    graph[a].append(b)
    graph[b].append(a)


visited = [False]*N


import sys

def dfs(num,depth):

    if depth == 4:
        print(1)
        sys.exit()
    visited[num] = True
    
    for f in graph[num]:
        if visited[f] == False:
            visited[f] = True
            dfs(f,depth+1)
            visited[f] = False


for i in range(N):
    
    dfs(i,0) 
    visited[i] = False


print(0)

풀이

  • 문제의 요구 사항은 한 명에서 시작하여서 총 4번의 depth를 거치면 됨.
  • 모든 친구에 대해 진행해보아야 함. 한명이라도 depth가 4번 이상이면 됨.
  • 양방향 그래프의 그래프를 구현하는 방법에 대해 다시 한번 공부함.

0개의 댓글