[백준/BOJ][Python] 1260번 DFS와 BFS

Eunding·2024년 12월 4일

algorithm

목록 보기
62/110

1260번 DFS와 BFS

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


아이디어

dfs bfs를 각각 구현하면 된다.
이때 간선을 입력받고 그래프마다 오름차순 정렬을 해줘야한다. 안 그러면 탐색 순서가 달라진다.


코드

import sys
from collections import deque
input = sys.stdin.readline

def dfs(start):
    visited[start] = True
    print(start, end=' ')
    for i in graph[start]:
        if not visited[i]:
            dfs(i)

def bfs(start):
    queue = deque([start])
    visited[start] = True
    while queue:
        x = queue.popleft()
        print(x, end=' ')
        for i in graph[x]:
            if not visited[i]:
                queue.append(i)
                visited[i] = True

n, m, v = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

for i in range(1, n+1): 
    graph[i].sort()

visited = [False] * (n+1)
dfs(v)
print()

visited = [False] * (n+1)
bfs(v)

0개의 댓글