오뚝이개발자

[백준13023] ABCDE 본문

코딩 테스트/백준

[백준13023] ABCDE

땅어 2020. 3. 31. 22:42
728x90
300x250

문제


https://www.acmicpc.net/problem/13023

 

13023번: ABCDE

문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.

www.acmicpc.net

 

생각의 흐름


전형적인 DFS 문제이다. 문제의 요점은 A-B, B-C, C-D, D-E인 친구관계가 존재하는지를 조사하는 것이다. adjacent list를 이용하여 연결관계에 대한 정보를 저장하고 시작점을 vertex 0부터 n-1까지 돌아가면서 dfs를 사용하여 depth가 4이상이 되는 subgraph가 존재하는지를 판별하면 된다.

 

코드


n, m = map(int, input().split())
adj_lst = [[] for i in range(n)]

for i in range(m):
    a, b = map(int, input().split())
    adj_lst[a].append(b)
    adj_lst[b].append(a)

visited = [False for i in range(n)]

def dfs(v, depth):
    global ans
    visited[v] = True
    if depth == 4:
        ans = True
        return
    for nxt in adj_lst[v]:
        if not visited[nxt]:
            dfs(nxt, depth+1)
            visited[nxt] = False

ans = False
# 돌아가면서 dfs의 시작점 설정
for i in range(n):
    dfs(i,0)
    visited[i] = False
    if ans:
        break
print(1 if ans else 0)

 

728x90
300x250

'코딩 테스트 > 백준' 카테고리의 다른 글

[백준16194] 카드 구매하기 2  (0) 2020.04.15
[백준3055] 탈출  (0) 2020.04.14
[백준7576] 토마토  (0) 2020.03.30
[백준14226] 이모티콘  (0) 2020.03.23
[백준2178] 미로 탐색  (0) 2020.03.22
Comments