SWEA
1263. [S/W 문제해결 응용] 8일차 - 사람 네트워크2 (python)
콩순이냉장고
2025. 1. 10. 19:46
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 접근법:
이런종류 문제 많이풀어서
그냥 공식대로 그냥 풀어볼 까 생각했는데
트리가 아니라 그래프더군요
트리라면 공식이 존재하지만 그래프라 크루스칼 알고리즘을 썼는데
그냥 되더군요 솔직히 시간이 이렇게 길게 나올줄알고 안쓰다가 그냥 한번 써봐야지 했는데 된거라
시간을 줄이는 연습인 문제가 아니더군요
소스코드:
from collections import defaultdict
#import sys
#sys.stdin = open("input.txt","r")
Test = int(input())
for test in range(1,Test+1):
t = list(map(int,input().split()))
n = t.pop(0)
l = [[0]*n for i in range(n)]
for i in range(n):
for j in range(n):
l[i][j]=t[i*n+j]
if i!=j and l[i][j]==0:
l[i][j]=int(1e9)
for k in range(n):
for i in range(n):
for j in range(n):
l[i][j]=min(l[i][j],l[i][k]+l[k][j])
res = int(1e9)
for i in range(n):
sum = 0
for j in range(n):
if l[i][j]!=int(1e9):
sum+=l[i][j]
res = min(res,sum)
print('#{} {}'.format(test,res))

궁금한점 혹은 모르는점 어떤 질문이든 댓글은 언제나 환영입니다.