Island Cities
시간 제한3초메모리 제한1024 MB
연결된 다리 그래프와 예산이 주어질 때 모든 두 섬 사이 병목 값의 최솟값을 최대화하고, 각 다리의 최적 강화 횟수를 하나 출력한다.
문제
민영 국가는 개의 섬 도시와 개의 양방향 다리로 이루어져 있으며, 모든 섬 도시는 다리를 통해 직간접적으로 연결되어 있다. 각 섬은 번부터 번까지 번호가 매겨져 있고, 각 다리는 번부터 번까지 번호가 매겨져 있다. 번 다리는 섬 도시 와 를 연결하며, 초기에는 최대 의 하중을 견딜 수 있다.
다리 강화 작업에 사용할 수 있는 예산 가 주어진다. 각 다리는 강화 작업을 할 때마다 만큼의 비용을 들여 견딜 수 있는 하중을 만큼 증가시킬 수 있다. 다리 강화 작업은 예산을 초과하지 않는 선에서 얼마든지 반복할 수 있고, 다리를 강화하지 않을 수도 있다.
강화 작업이 완료된 이후, 임의의 서로 다른 두 섬 , 사이에서 물건을 배송한다고 생각해 보자. 두 섬을 연결하는 경로상의 다리 중 견딜 수 있는 하중이 가장 낮은 다리의 하중이 배송 상한선이 된다. 가능한 경로가 여러 개라면 배송 상한선이 더 큰 경로를 선택한다. 그때의 배송 상한선을 라고 하자.
모든 서로 다른 두 섬 쌍 에 대해서 의 최솟값을 라 하자. 시민들의 불만을 줄이고자 를 가능한 한 크게 하고 싶다. 그러기 위해서는 각 다리에 몇 번의 강화 작업을 수행해야 할까?
입력
첫째 줄에 , , 가 공백으로 구분되어 주어진다.
둘째 줄부터 개의 줄에 걸쳐 순서대로, 번 다리의 정보 , , , , 가 공백으로 구분되어 주어진다.
입력으로 주어지는 수는 모두 정수이다.
출력
첫째 줄에 의 최댓값을 출력한다.
둘째 줄부터 개의 줄에 걸쳐, 번째 줄에 번 다리를 몇 번 강화해야 하는지 출력한다. 정답이 여러 개라면 그중 하나만 출력한다.