문제 설명
n개의 섬 사이에 다리를 건설하는 비용이 주어지면 모든 섬을 최소 비용으로 서로 통과할 수 있도록 만드는 데 필요한 최소 비용을 반환하도록 솔루션을 완성하십시오.
다리를 여러 번 건너더라도 도달할 수 있는 한 통행 가능한 것으로 간주됩니다.
예를 들어 A섬과 B섬 사이, B섬과 C섬 사이에 다리가 있다면 A섬과 C섬은 서로 통행이 가능하다.
제한
- 섬의 수 n은 1보다 크거나 같고 100보다 작거나 같습니다.
- 비용의 길이 ((n-1) * n) / 2 이하.
- 모든 i의 경우, cost(i)(0) 및 cost(i) (1)에는 다리가 연결하는 두 개의 섬 수가 포함되고, cost(i) (2)에는 이 두 개의 섬을 연결하는 다리가 포함됩니다.
공사비입니다. - 동일한 연결은 두 번 제공되지 않습니다.
또한 순서가 뒤바뀐 경우에도 동일한 연결이 표시됩니다.
즉, 0과 1 사이를 연결하는 비용이 주어지면 1과 0의 비용은 주어지지 않는다. - 모든 섬 사이의 다리 건설 비용은 주어지지 않습니다.
이 경우 두 섬 사이의 건설은 불가능한 것으로 간주됩니다. - 도달할 수 없는 섬은 주어지지 않습니다.
I/O 예시
I/O 예제 설명
암호
더보기
def solution(n, costs):
ans = 0
costs.sort(key = lambda x: x(2))
routes = set((costs(0)(0)))
while len(routes) < n:
for i, cost in enumerate(costs):
if cost(0) in routes and cost(1) in routes:
continue
if cost(0) in routes or cost(1) in routes:
routes.update((cost(0), cost(1)))
ans += cost(2)
costs(i) = (-1, -1, -1)
break
return ans