๋ฌธ์
์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น์ ์ํ๋ฉด ์ง๊ตฌ์ ์๋ ๋ชจ๋ ์ฌ๋๋ค์ ์ต๋ 6๋จ๊ณ ์ด๋ด์์ ์๋ก ์๋ ์ฌ๋์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์๋ค. ์ผ๋น ๋ฒ ์ด์ปจ ๊ฒ์์ ์์์ ๋ ์ฌ๋์ด ์ต์ ๋ช ๋จ๊ณ ๋ง์ ์ด์ด์ง ์ ์๋์ง ๊ณ์ฐํ๋ ๊ฒ์์ด๋ค.
์๋ฅผ ๋ค๋ฉด, ์ ํ ์๊ด์์ ๊ฒ ๊ฐ์ ์ธํ๋ํ๊ต์ ์ด๊ฐํธ์ ์๊ฐ๋ํ๊ต์ ๋ฏผ์ธํฌ๋ ๋ช ๋จ๊ณ๋ง์ ์ด์ด์ง ์ ์์๊น?
์ฒ๋ฏผํธ๋ ์ด๊ฐํธ์ ๊ฐ์ ํ๊ต์ ๋ค๋๋ ์ฌ์ด์ด๋ค. ์ฒ๋ฏผํธ์ ์ต๋ฐฑ์ค์ Baekjoon Online Judge๋ฅผ ํตํด ์๊ฒ ๋์๋ค. ์ต๋ฐฑ์ค๊ณผ ๊น์ ์์ ๊ฐ์ด Startlink๋ฅผ ์ฐฝ์ ํ๋ค. ๊น์ ์๊ณผ ๊น๋ํ์ ๊ฐ์ ํ๊ต ๋์๋ฆฌ ์์์ด๋ค. ๊น๋ํ๊ณผ ๋ฏผ์ธํฌ๋ ๊ฐ์ ํ๊ต์ ๋ค๋๋ ์ฌ์ด๋ก ์๋ก ์๊ณ ์๋ค. ์ฆ, ์ด๊ฐํธ-์ฒ๋ฏผํธ-์ต๋ฐฑ์ค-๊น์ ์-๊น๋ํ-๋ฏผ์ธํฌ ์ ๊ฐ์ด 5๋จ๊ณ๋ง ๊ฑฐ์น๋ฉด ๋๋ค.
์ผ๋น ๋ฒ ์ด์ปจ์ ๋ฏธ๊ตญ ํ๋ฆฌ์ฐ๋ ์ํ๋ฐฐ์ฐ๋ค ๋ผ๋ฆฌ ์ผ๋น ๋ฒ ์ด์ปจ ๊ฒ์์ ํ์๋ ๋์ค๋ ๋จ๊ณ์ ์ด ํฉ์ด ๊ฐ์ฅ ์ ์ ์ฌ๋์ด๋ผ๊ณ ํ๋ค.
์ค๋์ Baekjoon Online Judge์ ์ ์ ์ค์์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ ์ฐพ์ผ๋ ค๊ณ ํ๋ค. ์ผ๋น ๋ฒ ์ด์ปจ ์๋ ๋ชจ๋ ์ฌ๋๊ณผ ์ผ๋น ๋ฒ ์ด์ปจ ๊ฒ์์ ํ์ ๋, ๋์ค๋ ๋จ๊ณ์ ํฉ์ด๋ค.
์๋ฅผ ๋ค์ด, BOJ์ ์ ์ ๊ฐ 5๋ช ์ด๊ณ , 1๊ณผ 3, 1๊ณผ 4, 2์ 3, 3๊ณผ 4, 4์ 5๊ฐ ์น๊ตฌ์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์.
1์ 2๊น์ง 3์ ํตํด 2๋จ๊ณ ๋ง์, 3๊น์ง 1๋จ๊ณ, 4๊น์ง 1๋จ๊ณ, 5๊น์ง 4๋ฅผ ํตํด์ 2๋จ๊ณ ๋ง์ ์ ์ ์๋ค. ๋ฐ๋ผ์, ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 2+1+1+2 = 6์ด๋ค.
2๋ 1๊น์ง 3์ ํตํด์ 2๋จ๊ณ ๋ง์, 3๊น์ง 1๋จ๊ณ ๋ง์, 4๊น์ง 3์ ํตํด์ 2๋จ๊ณ ๋ง์, 5๊น์ง 3๊ณผ 4๋ฅผ ํตํด์ 3๋จ๊ณ ๋ง์ ์ ์ ์๋ค. ๋ฐ๋ผ์, ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 2+1+2+3 = 8์ด๋ค.
3์ 1๊น์ง 1๋จ๊ณ, 2๊น์ง 1๋จ๊ณ, 4๊น์ง 1๋จ๊ณ, 5๊น์ง 4๋ฅผ ํตํด 2๋จ๊ณ ๋ง์ ์ ์ ์๋ค. ๋ฐ๋ผ์, ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 1+1+1+2 = 5์ด๋ค.
4๋ 1๊น์ง 1๋จ๊ณ, 2๊น์ง 3์ ํตํด 2๋จ๊ณ, 3๊น์ง 1๋จ๊ณ, 5๊น์ง 1๋จ๊ณ ๋ง์ ์ ์ ์๋ค. 4์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 1+2+1+1 = 5๊ฐ ๋๋ค.
๋ง์ง๋ง์ผ๋ก 5๋ 1๊น์ง 4๋ฅผ ํตํด 2๋จ๊ณ, 2๊น์ง 4์ 3์ ํตํด 3๋จ๊ณ, 3๊น์ง 4๋ฅผ ํตํด 2๋จ๊ณ, 4๊น์ง 1๋จ๊ณ ๋ง์ ์ ์ ์๋ค. 5์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 2+3+2+1 = 8์ด๋ค.
5๋ช ์ ์ ์ ์ค์์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ 3๊ณผ 4์ด๋ค.
BOJ ์ ์ ์ ์์ ์น๊ตฌ ๊ด๊ณ๊ฐ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ก์ ๋, ์ผ๋น ๋ฒ ์ด์ปจ์ ์๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ์ N (2 ≤ N ≤ 100)๊ณผ ์น๊ตฌ ๊ด๊ณ์ ์ M (1 ≤ M ≤ 5,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ์น๊ตฌ ๊ด๊ณ๊ฐ ์ฃผ์ด์ง๋ค. ์น๊ตฌ ๊ด๊ณ๋ A์ B๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, A์ B๊ฐ ์น๊ตฌ๋ผ๋ ๋ป์ด๋ค. A์ B๊ฐ ์น๊ตฌ์ด๋ฉด, B์ A๋ ์น๊ตฌ์ด๋ฉฐ, A์ B๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋ค. ์น๊ตฌ ๊ด๊ณ๋ ์ค๋ณต๋์ด ๋ค์ด์ฌ ์๋ ์์ผ๋ฉฐ, ์น๊ตฌ๊ฐ ํ ๋ช ๋ ์๋ ์ฌ๋์ ์๋ค. ๋, ๋ชจ๋ ์ฌ๋์ ์น๊ตฌ ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด์ ธ ์๋ค. ์ฌ๋์ ๋ฒํธ๋ 1๋ถํฐ N๊น์ง์ด๋ฉฐ, ๋ ์ฌ๋์ด ๊ฐ์ ๋ฒํธ๋ฅผ ๊ฐ๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ BOJ์ ์ ์ ์ค์์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ ์ถ๋ ฅํ๋ค. ๊ทธ๋ฐ ์ฌ๋์ด ์ฌ๋ฌ ๋ช ์ผ ๊ฒฝ์ฐ์๋ ๋ฒํธ๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
5 5
1 3
1 4
4 5
4 3
3 2
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
3
# ํ์ด ๋ฐฉ๋ฒ
์ฒ์์ ๋ณ ์๊ฐ์์ด dfs๋ก ์ ๊ทผํ๋ค๊ฐ ์๋ชป๋์์์ ํ์ธํ๋ค. ๊ทธ๋์ bfs๋ก ์์
A์ B์ฌ์ด์ ๋จ๊ณ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด์๋ ์ต๋จ ๋จ๊ณ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋๋ฐ dfs๋ก ํ ๋๋ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
(๊ฐ์ ๊ฐ์ค์น๊ฐ ๋์ผํ ๋ ์ต๋จ ๊ฒฝ๋ก๋ bfs๋ก ๊ตฌํ ์ ์๋ค.)
bfs๋ก ๋ฐ๊พธ๊ณ ๋๋จธ์ง๋ ํฌ๊ฒ ์ด๋ ต์ง ์์๋ค.
# ์ฝ๋
# 2024-04-19 01:30-54
import sys
sys.stdin = open("input.txt","r")
from collections import deque
MAX = 1e7
n, m = map(int,sys.stdin.readline().split())
graph = [[] for _ in range(n+1)]
for _ in range(m):
a, b = map(int,sys.stdin.readline().split())
graph[a].append(b);graph[b].append(a)
def bfs(start, target):
visited = [False] * (n+1)
queue = deque()
queue.append((start,0))
visited[start] = True
while queue:
curr, cnt = queue.popleft()
if curr == target:
return cnt
for g in graph[curr]:
if not visited[g]:
visited[g] = True
queue.append((g,cnt+1))
min_cnt = MAX
min_i = -1
for i in range(1,n+1):
total_cnt = 0
for j in range(1,n+1):
total_cnt += bfs(i,j)
if total_cnt < min_cnt:
min_cnt = total_cnt; min_i = i
print(min_i)
'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Gold V] 15486 - ํด์ฌ2 (0) | 2025.04.20 |
---|---|
[Silver I] 1699 - ์ ๊ณฑ์์ ํฉ (0) | 2025.04.19 |
[Silver III] 2606 - ๋ฐ์ด๋ฌ์ค (0) | 2025.04.19 |
[Gold V] 7576 - ํ ๋งํ (0) | 2025.04.19 |
[Silver II] 10971 - ์ธํ์ ์ํ2 (0) | 2025.04.16 |