문제
서현 국가는 개의 섬 도시와 개의 양방향 다리로 이루어져 있으며, 모든 섬 도시는 다리를 통해 직간접적으로 연결되어 있다. 각 섬은 부터 까지 번호가 매겨져 있고, 각 다리는 부터 까지 번호가 매겨져 있다. 번 다리는 섬 도시 와 를 연결하며, 초기에는 최대 의 하중을 견딜 수 있다.
다리 강화 작업에 사용할 수 있는 예산 가 주어진다. 각 다리는 한 번의 강화 작업을 통해 하중을 만큼 증가시킬 수 있고, 만큼의 비용이 든다. 다리 강화 작업은 예산을 초과하지 않는 선에서 얼마든지 반복할 수 있고, 다리를 강화하지 않을 수도 있다.
강화 작업이 완료된 이후, 임의의 서로 다른 두 섬 , 사이에서 물건을 배송한다고 생각해 보자. 두 섬을 연결하는 경로상의 다리 중 가장 하중이 낮은 다리의 하중이 배송 상한선이 된다. 가능한 경로가 여러 개라면 배송 상한선이 더 큰 경로를 선택한다. 그때의 배송 상한선을 라고 하자.
모든 서로 다른 두 섬 쌍 에 대해서 의 최솟값을 라 하자. 시민들의 불만을 줄이고자 를 가능한 한 크게 하고 싶다. 그러기 위해서는 각 다리에 몇 번의 강화 작업을 수행해야 할까?
입력
첫째 줄에 , , 가 공백으로 구분되어 주어진다.
둘째 줄부터 개의 줄에 걸쳐, 번 다리의 정보 , , , , 가 공백으로 구분되어 주어진다.
입력으로 주어지는 수는 모두 정수이다.
출력
첫째 줄에 의 최댓값을 출력한다.
둘째 줄부터 개의 줄에 걸쳐, 번째 줄에 번 다리를 몇 번 강화해야 하는지 출력한다. 정답이 여러 개라면 그중 하나만 출력한다.
예제 입력 1
3 3 1
1 2 5 1 1
2 3 1 4 1
1 3 3 1 1
예제 출력 1
5
0
1
0
강화 이전의 , , 이므로 는 이다.
번째 다리를 회 강화하면 는 가 된다. 예산 내에서 를 이보다 크게 만드는 경우는 존재하지 않는다.
예제 입력 2
3 3 1
1 2 5 1 1
2 3 1 4 2
1 3 3 1 1
예제 출력 2
4
0
0
1
예제 입력 2
3 3 30
1 2 10 1 1
1 2 1 100 2
3 2 1 100 2
예제 출력 2
701
1
7
7
두 섬을 연결하는 다리가 여러 개 있을 수도 있다.
- 문제를 만든 사람
- 조서현
- 알고리즘 분류
코드를 제출하려면 로그인이 필요합니다.
로그인