computer/algorithm
백준1260 - DFS와 BFS
축구왕농구킹
2021. 11. 28. 13:57
주어진 경로에 대해 dfs, bfs로 순회한 결과를 출력하는 문제이다.
1. dfs, bfs의 개념을 알고 있는가?
2. 그래프를 어떻게 표현할 것인가?
3. 주어진 그래프 순회 법에서 dfs와 bfs를 어떻게 적용할 것인가?
위 세가지를 알아야 문제를 해결할 수 있다.
from collections import deque
def dfs(graph, begin, visited_list):
b = begin - 1
visited_list.append(b)
print(begin, end=' ')
for i, v in enumerate(graph[b]):
if v == 1 and i not in visited_list:
visited_list.append(i)
dfs(graph, i + 1, visited_list)
return 0
def bfs(graph, begin, visited_list):
b = begin - 1
q = deque()
q.append(b)
visited_list.append(b)
print(begin, end=' ')
while True:
if len(q) == 0:
break
for i, v in enumerate(graph[q[0]]):
if v == 1 and i not in visited_list:
q.append(i)
visited_list.append(i)
print(i + 1, end=' ')
q.popleft()
return 0
int_v, int_e, begin = map(int, input().split())
graph = [[0] * int_v for i in range(int_v)]
for i in range(int_e):
x, y = map(int, input().split())
graph[x - 1][y - 1] = 1
graph[y - 1][x - 1] = 1
dfs(graph, begin, [])
print()
bfs(graph, begin, [])
- 파이썬 풀이