https://www.acmicpc.net/problem/1260
dfs는 재귀, bfs는 큐(deque 모듈 활용)를 이용했다.
from collections import deque
N, M, V = map(int, input().split())
graph = [[0] * (N+1) for _ in range(N+1)] #그래프
for _ in range(M):
i, j = map(int, input().split())
graph[i][j] = 1
graph[j][i] = 1
visited = [0] * (N+1) #방문 체크
def dfs(V):
visited[V] = 1
print(V, end = ' ')
for i in range(1, N+1):
if(visited[i] == 0 and graph[V][i] == 1):
dfs(i)
def bfs(V):
queue = deque()
queue.append(V)
visited[V] = 1 #방문 표시
while queue:
V = queue.popleft()
print(V, end = ' ')
for i in range(1, N+1):
if(visited[i] == 0 and graph[V][i] == 1):
queue.append(i)
visited[i] = 1
dfs(V)
visited = [0] * (N+1) #방문 초기화
print()
bfs(V)
'문제를 풀자' 카테고리의 다른 글
[백준 #1463] 1로 만들기(Python) (1) | 2023.03.06 |
---|---|
[백준 #1149] RGB거리(Python) (0) | 2022.10.02 |
[프로그래머스] 영어 끝말잇기(C++) (0) | 2022.08.19 |
[프로그래머스] 두 큐 합 같게 만들기(C++) (0) | 2022.08.19 |
[프로그래머스] 예상 대진표(C++) (0) | 2022.08.18 |
댓글