Island Cities

시간 제한3초메모리 제한1024 MB

요약
연결된 다리 그래프와 예산이 주어질 때 모든 두 섬 사이 병목 값의 최솟값을 최대화하고, 각 다리의 최적 강화 횟수를 하나 출력한다.
난이도

어려움10점 중 9점

유형
최소 신장 트리, 이분 탐색, 그리디, 그래프
정답자
아직 제출이 없습니다

문제

민영 국가는 NN개의 섬 도시와 MM개의 양방향 다리로 이루어져 있으며, 모든 섬 도시는 다리를 통해 직간접적으로 연결되어 있다. 각 섬은 11번부터 NN번까지 번호가 매겨져 있고, 각 다리는 11번부터 MM번까지 번호가 매겨져 있다. i(1≤i≤M)i(1\le i\le M)번 다리는 섬 도시 u_iu\_i와 v_iv\_i를 연결하며, 초기에는 최대 w_iw\_i의 하중을 견딜 수 있다.

다리 강화 작업에 사용할 수 있는 예산 BB가 주어진다. 각 다리는 강화 작업을 할 때마다 y_iy\_i만큼의 비용을 들여 견딜 수 있는 하중을 x_ix\_i만큼 증가시킬 수 있다. 다리 강화 작업은 예산을 초과하지 않는 선에서 얼마든지 반복할 수 있고, 다리를 강화하지 않을 수도 있다.

강화 작업이 완료된 이후, 임의의 서로 다른 두 섬 uu, vv 사이에서 물건을 배송한다고 생각해 보자. 두 섬을 연결하는 경로상의 다리 중 견딜 수 있는 하중이 가장 낮은 다리의 하중이 배송 상한선이 된다. 가능한 경로가 여러 개라면 배송 상한선이 더 큰 경로를 선택한다. 그때의 배송 상한선을 f(u,v)f(u,v)라고 하자.

모든 서로 다른 두 섬 쌍 (u,v)(u,v)에 대해서 f(u,v)f(u,v)의 최솟값을 XX라 하자. 시민들의 불만을 줄이고자 XX를 가능한 한 크게 하고 싶다. 그러기 위해서는 각 다리에 몇 번의 강화 작업을 수행해야 할까?

입력

첫째 줄에 NN, MM, BB가 공백으로 구분되어 주어진다. (2≤N≤50,000;N−1≤M≤100,000;1≤B≤1,000,000)(2≤N≤50\\, 000; N-1≤M≤100\\, 000; 1≤B≤1\\, 000\\, 000)

둘째 줄부터 MM개의 줄에 걸쳐 순서대로, ii번 다리의 정보 u_iu\_i, v_iv\_i, w_iw\_i, x_ix\_i, y_iy\_i가 공백으로 구분되어 주어진다. (1≤u_i,v_i≤N,u_i≠v_i;1≤w_i,x_i≤100,000;1≤y_i≤10)(1\le u\_i,v\_i\le N, u\_i\neq v\_i; 1≤w\_i,x\_i≤100\\, 000;1\le y\_i\le 10)

입력으로 주어지는 수는 모두 정수이다.

출력

첫째 줄에 XX의 최댓값을 출력한다.

둘째 줄부터 MM개의 줄에 걸쳐, i+1i+1번째 줄에 ii번 다리를 몇 번 강화해야 하는지 출력한다. 정답이 여러 개라면 그중 하나만 출력한다.

예제3

  1. 예제 1

    입력
    3 3 1
    1 2 5 1 1
    2 3 1 4 1
    1 3 3 1 1
    
    예상 출력
    5
    0
    1
    0
    
  2. 예제 2

    입력
    3 3 1
    1 2 5 1 1
    2 3 1 4 2
    1 3 3 1 1
    
    예상 출력
    4
    0
    0
    1
    
  3. 예제 3

    입력
    3 3 30
    1 2 10 1 1
    1 2 1 100 2
    3 2 1 100 2
    
    예상 출력
    701
    1
    7
    7