BOJ - 18243

주의·2024년 2월 2일
0

boj

목록 보기
164/214

백준 문제 링크
Small World Network

❓접근법

  1. N이 100까지라서 플로이드 워셜 알고리즘을 활용했다.
  2. 초기값 INF = int(1e9)
    INF로 이루어진 2차원 리스트 graph를 만들고, 자기 자신에게 가는 비용은 0으로 만들어준다.
  3. 친구 관계를 graph에 넣어서 값을 1로 만들어주고,
    3중 반복문으로 최단 거리를 갱신해준다.
  4. 만약 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())

0개의 댓글