문제 (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
이번 스터디 주제인 이분탐색으로 해결하려고 했으나 도저히 모르겠어서 크루스칼로 해결했다 🤯
중량의 최댓값을 구해야 하는 문제이므로 입력을 받은 후 간선의 크기를 기준으로 내림차순 정렬했다. 노드들을 합쳐가면서 매번 마지막 입력으로 들어온 두 섬이 연결되었는지 확인해야 한다. 연결이 되었다면, 연결된 모든 노드들 간의 간선들 중 가장 작은 값이 정답이 된다.
가장 작은 값이 정답인 이유는 중량제한을 초과하는 양의 물품이 다리를 지나게 되면 다리가 무너지게 되기 때문이다. 따라서 생성된 두 섬 사이의 경로들 중 가장 작은 값이 중량의 최댓값이 되는 것이다!
[소스코드]
'ALGORITHM > BOJ' 카테고리의 다른 글
[BOJ] 1238번 파티 (C++) (0) | 2022.01.17 |
---|---|
[BOJ] 2887번 행성 터널 (C++) (0) | 2022.01.05 |
[BOJ] 3020번 개똥벌레 (C++) (0) | 2022.01.05 |
[BOJ] 4386번 별자리 만들기 (C++) (0) | 2022.01.04 |
[BOJ] 11779번 최소비용 구하기 2 (C++) (0) | 2022.01.04 |