백준 ) DFS와 BFS

·2022년 5월 20일
0
from collections import defaultdict

dict = defaultdict(list)
n, m, start = map(int, input().split())
for _ in range(m):
    a, b = map(int, input().split())
    dict[a].append(b)
    dict[b].append(a)
for i in range(1, n + 1):
     dict[i].sort()

---------------------------------------------------------- DFS

def dfs(pos, visit=[]): #---------------재귀 방식
    visit.append(pos)
    for j in dict[pos]:
        if j not in visit:
            dfs(j, visit)
    return visit
print(dfs(start))

def dfs_2(pos): #------------스택 방식
    stack = [pos]
    visited = []
    while stack :
        cur = stack.pop()
        if cur not in visited :
            visited.append(cur)
            for w in list(reversed(dict[cur])):
                stack.append(w)
    return visited
print(dfs_2(start))

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

profile
나 예인쓰, 응애인디

0개의 댓글