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 |