문제링크
https://www.acmicpc.net/problem/24445
코드
from collections import deque
input = __import__('sys').stdin.readline
n,m,r = map(int,input().split())
graph = [[] for _ in range(n+1)]
for _ in range(m):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
visited = [False for _ in range(n+1)]
result = [0 for _ in range(n)]
def bfs(start):
global result
num = 1
visited[start] = True
q = deque([start])
while q:
node = q.popleft()
result[node-1] = num
num+=1
for i in sorted(graph[node], reverse=True):
if not visited[i]:
visited[i] = True
q.append(i)
bfs(r)
print(*result, sep='\n')
문제풀이
기본적인 bfs 문제이다. 주의할 점은 인접 정점은 내림차순으로 방문해야 한다.
sorted(graph[node], reverse=True), 인접한 정점들을 내림차순으로 정렬하여 방문한다.
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python3] 14503번 : 로봇 청소기 (0) | 2023.08.26 |
---|---|
[백준/Python] 1238번 : 파티 (0) | 2023.08.25 |
[백준/python] 11725번 트리의 부모 찾기 (0) | 2023.08.20 |
[백준/C++] 1926번 : 그림 (0) | 2023.08.20 |
[백준/Python] 1303번 : 전쟁 - 전투 (0) | 2023.08.20 |