https://www.acmicpc.net/problem/13023
그래프 복습.
이번 문제는 DFS를 이용하는 문제였다.
연결된 노드를 따라 건너면서 step이 4 이상이 되면 조건에 맞는다고 판단한다.
import sys
input = sys.stdin.readline
N, M = map(int, input().split(" "))
graph = [[] for i in range(N)]
for i in range(M):
a, b = map(int, input().split(" "))
graph[a].append(b)
graph[b].append(a)
for i in range(N):
graph[i].sort()
isEnd = False
def DFS(v, step, visited):
# print("v = {}, step = {}, visited = {}".format(v, step, visited))
global isEnd
if isEnd == True:
return
if step >= 4:
isEnd = True
return
for i in graph[v]:
if visited[i] == False:
visited[i] = True
DFS(i, step+1, visited)
visited[i] = False
for i in range(N):
visited = [False for i in range(N)]
visited[i] = True
DFS(i, 0, visited)
visited[i] = False
if isEnd == True:
break
print(0 if isEnd == False else 1)
백트랙킹이면 DFS함수 나올 때 visited[i] = False 해줘야하는데, 그거 까먹어서 1번 틀렸다,.
'알고리즘' 카테고리의 다른 글
백준 23286 허들 넘기 - 골드3 [파이썬] (2) | 2022.11.12 |
---|---|
백준 14284 간선 이어가기 2 - 골드5 [파이썬] (0) | 2022.11.11 |
백준 5430 AC - 골드5 [파이썬] (0) | 2022.11.07 |
프로그래머스 [1차]캐시 - level2 [파이썬] (0) | 2022.11.04 |
백준 1543 문서 검색 - 실버4 [파이썬] (0) | 2022.10.14 |