만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

도로 건설

면접 대비

시간 제한8초메모리 제한512 MB

요약
가중치가 있는 무방향 그래프가 주어질 때, 모든 도시가 서로 연결되고 수도에서 각 도시까지의 최단 거리가 원래와 같은 부분 그래프를 만들 때 드는 최소 건설 비용을 구한다.
난이도

보통10점 중 7점

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

문제

머서 왕은 ACM 왕국의 왕이다. 왕국에는 수도 하나와 여러 도시가 있지만, 지금은 도로가 하나도 없다. 왕은 수도와 도시를 잇는 도로를 놓는 계획을 세웠는데, 그 계획대로 공사하면 비용이 예상보다 훨씬 크다는 사실을 알게 되었다.

비용을 줄이려고 왕은 원래 계획에서 도로 몇 개를 빼서 새 계획을 만들기로 했다. 다만 새 계획은 다음 두 조건을 지켜야 한다.

  • 어느 두 도시를 골라도 그 둘을 잇는 경로가 있다.
  • 수도에서 각 도시까지의 최단 거리가 원래 계획과 같다.

조건을 만족하는 계획은 여러 개일 수 있다. 머서 왕은 그중 비용이 가장 적은 계획을 알고 싶다. 원래 계획을 읽어서 조건을 만족하는 계획의 최소 비용을 구하는 프로그램을 작성하라.

입력

입력은 여러 데이터 세트로 이루어진다. 각 데이터 세트의 형식은 다음과 같다.

N M
u1 v1 d1 c1
.
.
.
uM vM dM cM

각 데이터 세트의 첫 줄에는 도시의 수 NN과 원래 계획에 있는 도로의 수 MM이 주어진다 (1≤N≤100001 \le N \le 10000, 0≤M≤200000 \le M \le 20000).

이어지는 MM개의 줄에는 원래 계획의 도로 정보가 주어진다. ii번째 줄에는 네 정수 uiu_i, viv_i, did_i, cic_i가 주어진다 (1≤ui,vi≤N1 \le u_i, v_i \le N, ui≠viu_i \ne v_i, 1≤di≤10001 \le d_i \le 1000, 1≤ci≤10001 \le c_i \le 1000). 이는 uiu_i번 도시와 viv_i번 도시를 잇는 길이 did_i, 공사 비용 cic_i인 도로가 있다는 뜻이다.

모든 도로는 양방향이다. 같은 도시 쌍을 잇는 도로가 둘 이상 있는 경우는 없다. 1번 도시가 왕국의 수도이다. 원래 계획에서는 모든 도시가 수도에서 도달 가능하다.

입력의 끝은 공백으로 구분된 두 개의 0만 있는 줄로 표시한다. 이 줄은 데이터 세트로 처리하지 않는다.

출력

각 데이터 세트마다 조건을 만족하는 계획의 최소 비용을 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    3 3
    1 2 1 2
    2 3 2 1
    3 1 3 2
    5 5
    1 2 2 2
    2 3 1 1
    1 4 1 1
    4 5 1 1
    5 3 1 1
    5 10
    1 2 32 10
    1 3 43 43
    1 4 12 52
    1 5 84 23
    2 3 58 42
    2 4 86 99
    2 5 57 83
    3 4 11 32
    3 5 75 21
    4 5 23 43
    5 10
    1 2 1 53
    1 3 1 65
    1 4 1 24
    1 5 1 76
    2 3 1 19
    2 4 1 46
    2 5 1 25
    3 4 1 13
    3 5 1 65
    4 5 1 34
    0 0
    
    예상 출력
    3
    5
    137
    218
    
  2. 예제 2

    입력
    1 0
    0 0
    
    예상 출력
    0