반응형
https://www.acmicpc.net/problem/1260
from collections import deque
import sys
def bfs(graph, v, visited):
q = deque([v])
visited[v] = True
while q:
v = q.popleft()
print(v, end = " ")
for i in graph[v]:
if not visited[i]:
q.append(i)
visited[i] = True
def dfs(graph, v, visited):
visited[v] = True
print(v, end = " ")
for i in graph[v]:
if not visited[i]:
dfs(graph, i, visited)
n, m, v = map(int, sys.stdin.readline().split())
visited = [False] * (n + 1)
graph = [[] for _ in range(n + 1)]
for _ in range(m): # 2차원 배열로 연결정보 입력
a, b = map(int, sys.stdin.readline().split())
graph[a].append(b)
graph[b].append(a)
for i in range(1, n+1): # 각각 정렬
graph[i].sort()
dfs(graph, v, visited)
print()
visited = [False] * (n + 1)
bfs(graph, v, visited)
2차원 배열로 연결정보를 입력하는 부분에서 고민을 많이 하였다.
graph[a].append(b)
graph[b].append(a)
바로 이 부분인데
공부하다 보니 저 부분은 많이 쓰이는 알고리즘이므로 잘 알아둬야겠다..
반응형
'BOJ > Python' 카테고리의 다른 글
백준 2606번 바이러스 파이썬 DFS (0) | 2022.02.05 |
---|---|
백준 2667번 단지 번호 붙이기 파이썬 DFS (0) | 2022.02.04 |
백준 10809번 알파벳 찾기 파이썬 (0) | 2022.01.29 |
백준 3036번 링 파이썬 (0) | 2022.01.17 |
백준 9012번 괄호 파이썬 (0) | 2022.01.16 |