만드는 중입니다

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

대동여지도

면접 대비

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

요약
모든 장소를 잇는 최소 비용 도로망을 구하고, 비용이 같으면 우선순위가 높은 도로 종류를 더 많이 고릅니다. 종류별 도로 수와 비용을 출력합니다.
난이도

보통10점 중 5점

유형
최소 신장 트리, 유니온 파인드, 정렬, 그리디
정답자
아직 제출이 없습니다

문제

세종이는 조선 시대의 지도인 대동여지도를 보면서 한양을 포함한 모든 지역을 연결하는 도로를 설치하면 비용이 얼마나 드는지 궁금해졌다.

설치할 수 있는 도로는 세 가지 종류가 있다. 도보 전용 도로, 말 전용 도로, 마차 전용 도로이다.

세종이는 두 지역을 연결할 수 있는 도로를 모두 설치하고 싶지만 국고가 부족하다. 그래서 최소한의 비용으로 모든 지역을 이동할 수 있도록 도로를 설치하려 한다. 최소 비용을 만드는 방법이 여러 가지라면 우선순위가 1번째인 도로가 가장 많은 방법을 고른다. 이 경우도 여러 가지라면 우선순위가 2번째인 도로가 가장 많은 방법을 고른다.

세종이를 도와 최소 비용을 구하고, 도보, 말, 마차 전용 도로 각각의 설치 개수와 비용을 파악해보자.

입력

첫 번째 줄에 장소의 개수 NN과 설치할 수 있는 도로의 개수 MM이 주어진다. (2≤N≤10 000(2 \le N \le 10\,000, N−1≤M≤200 000)N-1 \le M \le 200\,000)

두 번째 줄에 서로 다른 도로 종류 pip_i가 우선순위가 높은 순서대로 3개 주어진다. 각각 00은 도보 전용 도로, 11은 말 전용 도로, 22는 마차 전용 도로를 의미한다. (0≤pi≤2)(0 \le p_i \le 2)

다음 MM개의 줄에 두 장소를 연결하는 경로의 정보 uiu_i, viv_i, wiw_i, kik_i가 주어진다. uiu_i, viv_i는 각각 지역 번호를 의미한다. (ui≠vi(u_i \ne v_i, 1≤ui,vi≤N)1 \le u_i, v_i \le N) wiw_i는 도로의 설치 비용을 의미한다. (1≤wi≤10 000)(1 \le w_i \le 10\,000) kik_i는 도로의 종류를 의미하며, 각각 00은 도보 전용 도로, 11은 말 전용 도로, 22는 마차 전용 도로를 의미한다. (0≤ki≤2)(0 \le k_i \le 2)

입력은 모든 지역을 연결할 수 있도록 주어진다.

출력

첫 번째 줄에 NN개의 지역을 연결하기 위해 도로를 설치할 때 필요한 최소 비용을 출력한다.

두 번째 줄에 최소 비용으로 도로를 설치할 때 도보 전용 도로의 설치 개수와 비용을 공백으로 구분하여 출력한다.

세 번째 줄에 최소 비용으로 도로를 설치할 때 말 전용 도로의 설치 개수와 비용을 공백으로 구분하여 출력한다.

네 번째 줄에 최소 비용으로 도로를 설치할 때 마차 전용 도로의 설치 개수와 비용을 공백으로 구분하여 출력한다.

예제2

  1. 예제 1

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

    입력
    5 30
    0 1 2
    1 3 3 0
    1 3 16 1
    1 3 10 2
    2 3 16 0
    2 3 15 1
    2 3 15 2
    5 4 6 0
    5 4 13 1
    5 4 9 2
    3 4 13 0
    3 4 3 1
    3 4 4 2
    5 2 13 0
    5 2 16 1
    5 2 12 2
    5 3 7 0
    5 3 16 1
    5 3 1000 2
    2 5 7 0
    2 5 1 1
    2 5 13 2
    3 2 1 0
    3 2 3 1
    3 2 4 2
    1 3 16 0
    1 3 1 1
    1 3 8 2
    2 4 3 0
    2 4 7 1
    2 4 1 2
    
    예상 출력
    4
    1 1
    2 2
    1 1