ALGORITHM/BOJ

[BOJ] 1939번 중량제한 (C++)

yegyeom 2022. 1. 5. 11:51

문제 (https://www.acmicpc.net/problem/1939)

 

1939번: 중량제한

첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이

www.acmicpc.net

이번 스터디 주제인 이분탐색으로 해결하려고 했으나 도저히 모르겠어서 크루스칼로 해결했다 🤯

 

중량의 최댓값을 구해야 하는 문제이므로 입력을 받은 후 간선의 크기를 기준으로 내림차순 정렬했다. 노드들을 합쳐가면서 매번 마지막 입력으로 들어온 두 섬이 연결되었는지 확인해야 한다. 연결이 되었다면, 연결된 모든 노드들 간의 간선들 중 가장 작은 값이 정답이 된다.

 

가장 작은 값이 정답인 이유는 중량제한을 초과하는 양의 물품이 다리를 지나게 되면 다리가 무너지게 되기 때문이다. 따라서 생성된 두 섬 사이의 경로들 중 가장 작은 값이 중량의 최댓값이 되는 것이다! 


[소스코드]