문제 링크
https://www.acmicpc.net/problem/1260
DFS, BFS 유형을 처음 접해보는 내 입장에서는 정말 어려운 문제였다.
이 문제를 반복해서 풀어봐야 할 것 같다.
정답 코드
import sys
from collections import deque
N, M, V = map(int, sys.stdin.readline().split())
graph = [[0]*(N+1) for i in range(N+1)]
for i in range(M):
from_n, to_n = map(int, input().split())
graph[from_n][to_n] = graph[to_n][from_n] = 1
#양방향이니까
dfs_visited = [False] * (N+1)
def dfs(start_node):
dfs_visited[start_node] = 1
print(start_node, end=' ')
for i in range(1, N + 1):
if dfs_visited[i] == 0 and graph[start_node][i] == 1:
dfs(i)
bfs_visited = [False] * (N+1)
def bfs(start_node):
queue = [start_node]
bfs_visited[start_node] = 1
while queue:
start_node = queue.pop(0)
print(start_node, end=' ')
for i in range(1, N + 1):
if bfs_visited[i] == 0 and graph[start_node][i] == 1:
queue.append(i)
bfs_visited[i] = 1
dfs(V)
print()
bfs(V)
728x90
'파이썬 알고리즘 문제 풀이' 카테고리의 다른 글
Baekjoon Online Judge 1707번 파이썬 (0) | 2022.08.02 |
---|---|
Baekjoon Online Judge 11724번 파이썬 (0) | 2022.08.01 |
DFS, BFS (0) | 2022.07.29 |
Baekjoon Online Judge 2004번 파이썬 (0) | 2022.07.27 |
Baekjoon Online Judge 1676번 파이썬 (0) | 2022.07.26 |