백준 문제 링크
Small World Network
- N이 100까지라서 플로이드 워셜 알고리즘을 활용했다.
- 초기값 INF = int(1e9)
INF로 이루어진 2차원 리스트 graph를 만들고, 자기 자신에게 가는 비용은 0으로 만들어준다.- 친구 관계를 graph에 넣어서 값을 1로 만들어주고,
3중 반복문으로 최단 거리를 갱신해준다.- 만약 graph의 거리가 6보다 크다면 'Big World!'
6보다 작거나 같다면 'Small World!'를 return하는 함수를 만들면 끝!
N, K = map(int, input().split())
INF = int(1e9)
graph = [[INF] * (N + 1) for _ in range(N + 1)]
for a in range(1, N + 1):
for b in range(1, N + 1):
if a == b:
graph[a][b] = 0
for _ in range(K):
a, b = map(int, input().split())
graph[a][b] = 1
graph[b][a] = 1
for k in range(1, N + 1):
for a in range(1, N + 1):
for b in range(1, N + 1):
graph[a][b] = min(graph[a][b], graph[a][k] + graph[k][b])
def solution():
for i in range(1, N + 1):
for j in range(1, N + 1):
if graph[i][j] > 6:
return 'Big World!'
return 'Small World!'
print(solution())