https://www.acmicpc.net/problem/1260
1260번: DFS와 BFS
첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사
www.acmicpc.net
from collections import deque
n, m, v = map(int, input().split())
graph = [[0 for i in range(n + 1)] for j in range(n + 1)]
visit_d = [0] * (n + 1)
visit_b = [0] * (n + 1)
for i in range(m):
line = list(map(int, input().split()))
graph[line[0]][line[1]] = 1
graph[line[1]][line[0]] = 1
def dfs(graph, v, visit):
visit[v] = 1
print(v, end=" ")
for i in range(len(graph[v])):
if visit[i] != 1 and graph[v][i] == 1:
dfs(graph, i, visit)
def bfs(graph, v, visit_b):
visit_b[v] = 1
queue = deque([v])
while queue:
v = queue.popleft()
print(v, end=" ")
for i in range(len(graph[v])):
if visit_b[i] != 1 and graph[v][i] == 1:
queue.append(i)
visit_b[i] = 1
dfs(graph, v, visit_d)
print()
bfs(graph, v, visit_b)
반응형
'알고리즘 공부 > BFS & DFS' 카테고리의 다른 글
[백준] 1012번 유기농 배추 - 파이썬 (0) | 2021.08.18 |
---|---|
[백준] 2606번 단지번호붙이기 - 파이썬 (0) | 2021.08.17 |
[백준] 2606번 바이러스 - 파이썬 (0) | 2021.08.17 |
BFS "너비 우선 탐색" 알고리즘 (0) | 2021.03.31 |
DFS 깊이 우선 탐색 알고리즘 (0) | 2021.03.31 |