티스토리 뷰

www.acmicpc.net/problem/1260

 

1260번: DFS와 BFS

첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사

www.acmicpc.net

 

import sys
from collections import deque
import copy

n, m, start = map(int, sys.stdin.readline().rstrip().split())
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)

for _ in range(m):
    a, b = map(int, sys.stdin.readline().rstrip().split())
    graph[a].append(b)
    graph[b].append(a)


# 정점 번호가 작은 것부터 먼저 방문
for i in range(1, n + 1):
    graph[i] = sorted(graph[i])


def dfs(vertex, visited):
    visited[vertex] = True
    print(vertex, end=" ")

    for v in graph[vertex]:
        if not visited[v]:
            dfs(v, visited)


def bfs(vertex, visited):
    queue = deque()
    queue.append(vertex)
    visited[vertex] = True

    while queue:
        now = queue.popleft()
        print(now, end=" ")

        for v in graph[now]:
            if not visited[v]:
                queue.append(v)
                visited[v] = True


dfs(start, copy.deepcopy(visited))
print()
bfs(start, copy.deepcopy(visited))

'알고리즘 문제풀이 > BOJ' 카테고리의 다른 글

[BOJ] 구현 - 1076 저항  (0) 2020.10.01
[BOJ] 구현 - 15953 상금 헌터  (0) 2020.10.01
[BOJ] DFS/BFS - 1012 유기농 배추  (0) 2020.09.25
[BOJ] DFS/BFS - 2606 바이러스  (0) 2020.09.25
[BOJ] DP - 2839 설탕 배달  (0) 2020.09.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함