[백준] 1260번 DFS와 BFS

게으른 완벽주의자·2023년 3월 12일

백준

목록 보기
19/27

백준_1260

from collections import deque
n, m, v = map(int, input().split())     #정점, 간선, 시작정점번호
graph = [[] for _ in range(n+1)]
for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

def dfs(x, result):
    visited[x] = 1
    result.append(x)
    for node in graph[x]:
        if not visited[node]:
            dfs(node, result)

    return result

def bfs(x):
    result = [x]
    queue = deque()
    queue.append(x)
    visited[x] = 1
    while queue:
        node = queue.popleft()
        for post in graph[node]:
            if not visited[post]:
                visited[post] = 1
                queue.append(post)
                result.append(post)
    return result

#정점의 번호가 작은것부터 방문하므로 정렬해주기
for i in range(1,n+1):
    graph[i].sort()
    
visited = [0]*(n+1)
print(*dfs(v, []))
visited = [0]*(n+1)
print(*bfs(v))

정렬 먼저 해주고 방문하는게 포인트

profile
데이터를 공부하고 있습니다

0개의 댓글