https://www.acmicpc.net/problem/24444
전형적인 bfs의 문제
방문 순서를 지정하는 것이므로, 고유한 값으로 visited를 갱신해야함
cnt를 전역으로 선언해서 bfs에 방문이 될 때 마다 cnt 값을 증가시켜 값을 갱신
import sys
from collections import deque
input = sys.stdin.readline
N, M, R = map(int,input().split())
s = [[] for _ in range(N+1)]
visited = [0] * (N+1)
cnt = 1
def bfs(v):
global cnt
queue = deque()
queue.append(v)
visited[v] = cnt
while queue:
x = queue.popleft()
s[x].sort()
for i in s[x]:
if visited[i] == 0:
cnt += 1
visited[i] = cnt
queue.append(i)
for _ in range(M):
u,v = map(int,input().split())
s[u].append(v)
s[v].append(u)
bfs(R)
for i in range(1,N+1):
print(visited[i])
회고.
이미 아는 것을 풀어 기억하고 있는 상태에서 코드를 치는거라 바로 풀수 있었다.
2주 뒤에 꼭 다시 풀어봐야 겠다,,
'PS' 카테고리의 다른 글
[BOJ] Python 백준 촌수계산(2644) (0) | 2024.11.04 |
---|---|
[Progammers] Python 프로그래머스 모음사전(84512) (0) | 2024.11.03 |
[BOJ] Python 백준 알고리즘 수업 - 깊이 우선 탐색 1(24479) (0) | 2024.10.31 |
[Progammers] Python 프로그래머스 입국심사(43238) (2) | 2024.10.30 |
[BOJ] Python 백준 징검다리(11561) (0) | 2024.10.29 |
댓글