[백준 13424] 비밀 모임
1. 문제 설명
2. 문제 분석
플로이드-워셜 알고리즘을 통해 각 노드에서 다른 모든 노드로 가는 최단 거리를 찾는다. 이동할 노드 행 열 값을 모두 더해서 최소가 되는 인덱스를 왼쪽에서부터 고르자.
3. 나의 풀이
import sys
t = int(sys.stdin.readline().rstrip())
for _ in range(t):
    INF = sys.maxsize
    n, m = map(int, sys.stdin.readline().rstrip().split())
    nodes= [[INF for _ in range(n+1)] for _ in range(n+1)]
    for i in range(1, n+1): nodes[i][i] = 0
    for _ in range(m):
        a, b, c = map(int, sys.stdin.readline().rstrip().split())
        nodes[a][b] = c
        nodes[b][a] = c
    friends_num = int(sys.stdin.readline().rstrip())
    friends = list(map(int, sys.stdin.readline().rstrip().split()))
    for k in range(1, n+1):
        for i in range(1, n+1):
            for j in range(1, n+1):
                if nodes[i][j] > nodes[i][k] + nodes[k][j]:
                    nodes[i][j] = nodes[i][k] + nodes[k][j]
    result = [0 for _ in range(n+1)]
    result[0] = INF
    for i in friends:
        for j in range(1, n+1):
            result[j] += nodes[i][j]
    print(result.index(min(result)))
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Author And Source
                            
                            이 문제에 관하여([백준 13424] 비밀 모임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://velog.io/@j_aion/백준-13424-비밀-모임
                            
                            
                            
                                저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
플로이드-워셜 알고리즘을 통해 각 노드에서 다른 모든 노드로 가는 최단 거리를 찾는다. 이동할 노드 행 열 값을 모두 더해서 최소가 되는 인덱스를 왼쪽에서부터 고르자.
3. 나의 풀이
import sys
t = int(sys.stdin.readline().rstrip())
for _ in range(t):
    INF = sys.maxsize
    n, m = map(int, sys.stdin.readline().rstrip().split())
    nodes= [[INF for _ in range(n+1)] for _ in range(n+1)]
    for i in range(1, n+1): nodes[i][i] = 0
    for _ in range(m):
        a, b, c = map(int, sys.stdin.readline().rstrip().split())
        nodes[a][b] = c
        nodes[b][a] = c
    friends_num = int(sys.stdin.readline().rstrip())
    friends = list(map(int, sys.stdin.readline().rstrip().split()))
    for k in range(1, n+1):
        for i in range(1, n+1):
            for j in range(1, n+1):
                if nodes[i][j] > nodes[i][k] + nodes[k][j]:
                    nodes[i][j] = nodes[i][k] + nodes[k][j]
    result = [0 for _ in range(n+1)]
    result[0] = INF
    for i in friends:
        for j in range(1, n+1):
            result[j] += nodes[i][j]
    print(result.index(min(result)))
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Author And Source
                            
                            이 문제에 관하여([백준 13424] 비밀 모임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://velog.io/@j_aion/백준-13424-비밀-모임
                            
                            
                            
                                저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
import sys
t = int(sys.stdin.readline().rstrip())
for _ in range(t):
    INF = sys.maxsize
    n, m = map(int, sys.stdin.readline().rstrip().split())
    nodes= [[INF for _ in range(n+1)] for _ in range(n+1)]
    for i in range(1, n+1): nodes[i][i] = 0
    for _ in range(m):
        a, b, c = map(int, sys.stdin.readline().rstrip().split())
        nodes[a][b] = c
        nodes[b][a] = c
    friends_num = int(sys.stdin.readline().rstrip())
    friends = list(map(int, sys.stdin.readline().rstrip().split()))
    for k in range(1, n+1):
        for i in range(1, n+1):
            for j in range(1, n+1):
                if nodes[i][j] > nodes[i][k] + nodes[k][j]:
                    nodes[i][j] = nodes[i][k] + nodes[k][j]
    result = [0 for _ in range(n+1)]
    result[0] = INF
    for i in friends:
        for j in range(1, n+1):
            result[j] += nodes[i][j]
    print(result.index(min(result)))Author And Source
이 문제에 관하여([백준 13424] 비밀 모임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@j_aion/백준-13424-비밀-모임저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)