βοΈ λ¬Έμ
https://www.acmicpc.net/problem/24444
μ€λλ μμ€μ΄λ λλΉ μ°μ νμ(BFS) μμ μ‘°κ΅λ₯Ό νκ³ μλ€. μλΉ κ° μμ ν λ΄μ©μ νμλ€μ΄ μ μ΄ν΄νλμ§ λ¬Έμ λ₯Ό ν΅ν΄μ νμΈν΄λ³΄μ.
Nκ°μ μ μ κ³Ό Mκ°μ κ°μ μΌλ‘ ꡬμ±λ 무방ν₯ κ·Έλν(undirected graph)κ° μ£Όμ΄μ§λ€. μ μ λ²νΈλ 1λ²λΆν° Nλ²μ΄κ³ λͺ¨λ κ°μ μ κ°μ€μΉλ 1μ΄λ€. μ μ Rμμ μμνμ¬ λλΉ μ°μ νμμΌλ‘ λ Έλλ₯Ό λ°©λ¬Έν κ²½μ° λ Έλμ λ°©λ¬Έ μμλ₯Ό μΆλ ₯νμ.
λλΉ μ°μ νμ μμ¬ μ½λλ λ€μκ³Ό κ°λ€. μΈμ μ μ μ μ€λ¦μ°¨μμΌλ‘ λ°©λ¬Ένλ€.
π€ μ μΆλ ₯ μμ
π§ λμ΄λ/μμ μκ°
β λμ΄λ: solved.ac κΈ°μ€ S2
β μμ μκ°: 20λΆ
β κΆμ₯ μκ°: 45λΆ
π‘ νμ΄
1) λ¬Έμ μ ν νμ
4μΌμ°¨ λ¬Έμ μ μ μ¬ν μκ³ λ¦¬μ¦ μμ μ리μ¦λ‘, BFS μκ³ λ¦¬μ¦μ ꡬννλ©΄ λλ λ¬Έμ μλ€.
2) μμ΄λμ΄ νλ¦
β BFS μκ³ λ¦¬μ¦ κΈ°λ³Έ ν ꡬμ±
BFSμ ν΅μ¬μ νλ₯Ό νμ©νλ κ²μ΄λ€. κ°μ₯ λ¨Όμ μμ μ μ Rμ νμ λ°λ‘ μΆκ°νκ³ λ°©λ¬Έ μ²λ¦¬λ₯Ό ν΄μ€¬λ€.
popleft λ©μλλ₯Ό μ΄μ©ν΄ νμ μ μ₯λμ΄ μλ λ Έλλ₯Ό νλμ© κΊΌλ΄μ€ ν κ·Έλνμμμ ν΄λΉ λ Έλμ μ°κ²°λμ΄ μλ λ Έλ(next_nodeλ‘ μ μ)λ₯Ό μ€λ¦μ°¨μμΌλ‘ νμΈνλ€. visited λ°°μ΄μ next_nodeλ²μ§Έ μΈλ±μ€ κ°μ΄ 0μΈ κ²½μ°, μμ§ λ°©λ¬Ένμ§ μμλ€λ λ»μ΄κΈ° λλ¬Έμ visited[next_node]λ₯Ό λ°©λ¬Έ μμ κ°μΌλ‘ κ°±μ νλ€.
μμ κ³Όμ μ νκ° λΉ λκΉμ§ λ°λ³΅νλ©΄ λ¬Έμ ν΄κ²°!
3) ꡬν
import sys
from collections import deque
input = sys.stdin.readline
N, M, R = map(int, input().split())
graph = {k: [] for k in range(1, N+1)}
visited = [0]*(N+1)
for _ in range(M):
u, v = map(int, input().split())
graph[u].append(v)
graph[v].append(u)
visit_order = 1
def BFS(R):
global visit_order
queue = deque([R])
visited[R] = visit_order
while queue:
node = queue.popleft()
for next_node in sorted(graph[node]):
if visited[next_node] == 0:
visit_order += 1
visited[next_node] = visit_order
queue.append(next_node)
BFS(R)
print(*visited[1:], sep="\n")
4) μ΄λ €μ λ μ /λ°°μ΄ μ
π¨ μ΄λ €μ λ μ
- μμ
β λ°°μ΄ μ
- μ΄λ² λ¬Έμ μμλ λ±ν μμμ
'Problem Solving > [νν΄99] TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
99ν΄λ½ μ½ν μ€ν°λ 7μΌμ°¨ TIL / μμ νμ (0) | 2024.11.03 |
---|---|
99ν΄λ½ μ½ν μ€ν°λ 6μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.11.03 |
99ν΄λ½ μ½ν μ€ν°λ 4μΌμ°¨ TIL / DFS(κΉμ΄ μ°μ νμ) (0) | 2024.10.31 |
99ν΄λ½ μ½ν μ€ν°λ 3μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.10.30 |
99ν΄λ½ μ½ν μ€ν°λ 2μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.10.29 |