https://www.acmicpc.net/problem/1389
1389번: 케빈 베이컨의 6단계 법칙
첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻
www.acmicpc.net
풀이
플로이드 와샬을 이용하여 문제를 풀어주었다. 물론 BFS, DFS를 이용해서 풀어주어도 좋다.
# 1389번 케빈 베이컨의 6단계 법칙
import sys
INF = sys.maxsize
m, n = map(int, input().split())
graph = [[INF]*(m+1) for i in range(m+1)]
for _ in range(n):
a, b = map(int, input().split())
graph[a][b] = 1
graph[b][a] = 1
for k in range(1, m+1):
for i in range(1, m+1):
for j in range(1, m+1):
if i==j:
graph[i][j] = 0
else:
graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j])
ans = 0
minimum = INF
for i in range(1, m+1):
total = 0
for j in range(1, m+1):
total += graph[i][j]
if total < minimum:
minimum = total
ans = i
print(ans)
출력결과
'백준 > 최단거리' 카테고리의 다른 글
[백준][Python] 13549번 숨바꼭질 3(다익스트라 풀이) - 코팩 (0) | 2023.08.01 |
---|---|
[백준][Python] 13424번 비밀모임 - 코팩 (0) | 2022.11.10 |
[백준] 2610번 회의준비 - 파이썬 (0) | 2022.03.01 |
[백준] 11780번 플로이드 2 - 파이썬 (0) | 2022.02.26 |
[백준] 11404번 플로이드 - 파이썬 (0) | 2022.02.25 |