https://www.acmicpc.net/problem/2644
λ¬Έμ
μ°λ¦¬ λλΌλ κ°μ‘± νΉμ μΉμ²λ€ μ¬μ΄μ κ΄κ³λ₯Ό μ΄μλΌλ λ¨μλ‘ νννλ λ νΉν λ¬Ένλ₯Ό κ°μ§κ³ μλ€. μ΄λ¬ν μ΄μλ λ€μκ³Ό κ°μ λ°©μμΌλ‘ κ³μ°λλ€. κΈ°λ³Έμ μΌλ‘ λΆλͺ¨μ μμ μ¬μ΄λ₯Ό 1μ΄μΌλ‘ μ μνκ³ μ΄λ‘λΆν° μ¬λλ€ κ°μ μ΄μλ₯Ό κ³μ°νλ€. μλ₯Ό λ€λ©΄ λμ μλ²μ§, μλ²μ§μ ν μλ²μ§λ κ°κ° 1μ΄μΌλ‘ λμ ν μλ²μ§λ 2μ΄μ΄ λκ³ , μλ²μ§ νμ λ€κ³Ό ν μλ²μ§λ 1μ΄, λμ μλ²μ§ νμ λ€κ³Όλ 3μ΄μ΄ λλ€.
μ¬λ¬ μ¬λλ€μ λν λΆλͺ¨ μμλ€ κ°μ κ΄κ³κ° μ£Όμ΄μ‘μ λ, μ£Όμ΄μ§ λ μ¬λμ μ΄μλ₯Ό κ³μ°νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
μ¬λλ€μ 1, 2, 3, …, n (1 ≤ n ≤ 100)μ μ°μλ λ²νΈλ‘ κ°κ° νμλλ€. μ λ ₯ νμΌμ 첫째 μ€μλ μ 체 μ¬λμ μ nμ΄ μ£Όμ΄μ§κ³ , λμ§Έ μ€μλ μ΄μλ₯Ό κ³μ°ν΄μΌ νλ μλ‘ λ€λ₯Έ λ μ¬λμ λ²νΈκ° μ£Όμ΄μ§λ€. κ·Έλ¦¬κ³ μ μ§Έ μ€μλ λΆλͺ¨ μμλ€ κ°μ κ΄κ³μ κ°μ mμ΄ μ£Όμ΄μ§λ€. λ·μ§Έ μ€λΆν°λ λΆλͺ¨ μμκ°μ κ΄κ³λ₯Ό λνλ΄λ λ λ²νΈ x,yκ° κ° μ€μ λμ¨λ€. μ΄λ μμ λμ€λ λ²νΈ xλ λ€μ λμ€λ μ μ yμ λΆλͺ¨ λ²νΈλ₯Ό λνλΈλ€.
κ° μ¬λμ λΆλͺ¨λ μ΅λ ν λͺ λ§ μ£Όμ΄μ§λ€.
μΆλ ₯
μ λ ₯μμ μꡬν λ μ¬λμ μ΄μλ₯Ό λνλ΄λ μ μλ₯Ό μΆλ ₯νλ€. μ΄λ€ κ²½μ°μλ λ μ¬λμ μΉμ² κ΄κ³κ° μ ν μμ΄ μ΄μλ₯Ό κ³μ°ν μ μμ λκ° μλ€. μ΄λμλ -1μ μΆλ ₯ν΄μΌ νλ€.
νμ΄
κ·Έλνλ‘ κ°μ‘±κ΄κ³λ₯Ό μ μ₯νλ€. νμλ μΈμ 리μ€νΈλ₯Ό μ΄μ©νλ€.
λΆλͺ¨-μμ κ΄κ³κ° μλλ§νΌ λ°©ν₯μ΄ μμ κ² κ°μ§λ§ 무방ν₯μΈκ² ν¬μΈνΈ
from collections import deque
# input
n = int(input())
a,b = map(int, input().split())
graph = [[] for _ in range(n+1)]
m = int(input())
for i in range(m):
x,y = map(int, input().split())
graph[x].append(y)
graph[y].append(x)
# bfs
distance = [-1 for _ in range(n+1)]
distance[a] = 0
queue = deque([a])
while len(queue)>0:
cur = queue.popleft()
for i in graph[cur]:
if distance[i] == -1:
queue.append(i)
distance[i] = distance[cur] + 1
# output
print(distance[b])
'π νμ΄μ¬ μμ΄μ§' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ][Python] λ°±μ€ 10815λ²: μ«μ μΉ΄λ (0) | 2024.10.22 |
---|---|
[BOJ][Python] λ°±μ€ 9020λ²: 골λλ°νμ μΆμΈ‘ (1) | 2024.10.22 |
[BOJ][Python] λ°±μ€ 1475λ²: λ μ§ κ³μ° (0) | 2024.10.16 |
[BOJ][Python] λ°±μ€ 1789λ²: μλ€μ ν© (0) | 2024.10.15 |
[BOJ][Python] λ°±μ€ 25206λ²: λμ νμ μ (0) | 2024.10.15 |