π‘ 쑰건
- κΈ°λ³Έμ μΌλ‘ λΆλͺ¨μ μμ μ¬μ΄λ₯Ό 1μ΄μΌλ‘ μ μνκ³ μ΄λ‘λΆν° μ¬λλ€ κ°μ μ΄μλ₯Ό κ³μ°νλ€.
- μλ²μ§μ ν μλ²μ§λ κ°κ° 1μ΄μΌλ‘ λμ ν μλ²μ§λ 2μ΄μ΄ λκ³ , μλ²μ§ νμ λ€κ³Ό ν μλ²μ§λ 1μ΄, λμ μλ²μ§ νμ λ€κ³Όλ 3μ΄μ΄ λλ€.
- μ¬λ¬ μ¬λλ€μ λν λΆλͺ¨ μμλ€ κ°μ κ΄κ³κ° μ£Όμ΄μ‘μ λ, μ£Όμ΄μ§ λ μ¬λμ μ΄μλ₯Ό κ³μ°νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
- μ¬λλ€μ 1, 2, 3, β¦, n (1 β€ n β€ 100)μ μ°μλ λ²νΈλ‘ κ°κ° νμλλ€.
μ
λ ₯ νμΌμ 첫째 μ€μλ μ 체 μ¬λμ μ nμ΄ μ£Όμ΄μ§κ³ , λμ§Έ μ€μλ μ΄μλ₯Ό κ³μ°ν΄μΌ νλ μλ‘ λ€λ₯Έ λ μ¬λμ λ²νΈκ° μ£Όμ΄μ§λ€.
- μ
μ§Έ μ€μλ λΆλͺ¨ μμλ€ κ°μ κ΄κ³μ κ°μ mμ΄ μ£Όμ΄μ§λ€.
λ·μ§Έ μ€λΆν°λ λΆλͺ¨ μμκ°μ κ΄κ³λ₯Ό λνλ΄λ λ λ²νΈ x,yκ° κ° μ€μ λμ¨λ€. μ΄λ μμ λμ€λ λ²νΈ xλ λ€μ λμ€λ μ μ yμ λΆλͺ¨ λ²νΈλ₯Ό λνλΈλ€.
- κ° μ¬λμ λΆλͺ¨λ μ΅λ ν λͺ
λ§ μ£Όμ΄μ§λ€.
μ
λ ₯μμ μꡬν λ μ¬λμ μ΄μλ₯Ό λνλ΄λ μ μλ₯Ό μΆλ ₯νλ€.
μ΄λ€ κ²½μ°μλ λ μ¬λμ μΉμ² κ΄κ³κ° μ ν μμ΄ μ΄μλ₯Ό κ³μ°ν μ μμ λκ° μλ€. μ΄λμλ -1μ μΆλ ₯ν΄μΌ νλ€.
- BFS, κ·Έλννμ μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin
from collections import deque
n = int(stdin.readline())
a, b = map(int, stdin.readline().split())
graph = [[] for _ in range(n + 1)]
for _ in range(int(stdin.readline())):
k, p = map(int, stdin.readline().split())
graph[k].append(p)
graph[p].append(k)
def solve(x):
q = deque()
q.append((x, 0))
visited = set()
visited.add(x)
while q:
now, c = q.popleft()
if now == b:
return c
for i in graph[now]:
if i not in visited:
q.append((i, c + 1))
visited.add(i)
return False
ans = solve(a)
print(ans) if ans else print(-1)
π μμ λ° μ€νκ²°κ³Ό
μμ
9
8 6
7
1 2
1 3
2 7
2 8
2 9
4 5
4 6
μ€νκ²°κ³Ό
-1
β¨οΈ λ¬Έμ νμ΄
- μ΄μλ₯Ό κ³μ°νμ¬ λͺ μ΄μΈμ§ μΆλ ₯νλ €κ³ νλ λ¬Έμ μ΄κΈ° λλ¬Έμ κ·Έλν νμμΌλ‘ νμ΄ν μ μλ€.
- μꡬν λ μ¬λμ μ΄μλ₯Ό ꡬν΄μΌνκΈ° λλ¬Έμ μλ°©ν₯ κ·Έλνλ₯Ό λ§λ€μ΄ BFSλ₯Ό μ¬μ©ν΄ μ΄μλ₯Ό ꡬνκ³ μΆλ ₯νλ©΄ λλ€.
- BFS μκ³ λ¦¬μ¦μ ν΅ν΄ λμ¨ κ°μ΄ False λΌλ©΄ -1μ μΆλ ₯νκ³ μλλΌλ©΄ κ²°κ³Όκ°μ μΆλ ₯νλ©΄ λλ€.