https://www.acmicpc.net/problem/1389
해결 방법
> 각 사람들을 하나의 노드하고 생각하였다.
> 케빈의 베이컨 수는 각 노드에서 나머지 노드까지의 최단 거리의 합이다.
> 플로이드 워셜을 활용한다.
> 2차원 배열의 가로줄의 합이 케빈의 베이컨 수가 된다.
코드
더보기
user, friends_num = map(int,input().split())
#친구관계
relation = [[100 for i in range(user)]for i in range(user)]
for i in range(friends_num):
one, two = map(int, input().split())
relation[one-1][two-1] = 1
relation[two-1][one-1] = 1
#플로이드 워셜
for k in range(user):
for i in range(user):
for j in range(user):
if i == j:
pass
else:
relation[i][j] = min(relation[i][k] + relation[k][j], relation[i][j])
final_relation = []
for i in relation:
final_relation.append(sum(i))
print(final_relation.index(min(final_relation)) + 1)
'알고리즘' 카테고리의 다른 글
백준_11404_플로이드 (0) | 2020.01.21 |
---|---|
백준_4963_섬의 개수 (0) | 2020.01.20 |
백준_2178_미로 탐색 (0) | 2020.01.16 |
백준_7576_토마토 (0) | 2020.01.15 |
서로소 집합(disjoint set) 연습 (0) | 2020.01.14 |
댓글