만드는 중입니다

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

도로 위의 표지판

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

요약
그래프의 모든 마을을 방문할 때 적히는 숫자 문자열이 가장 작아지도록 구하고, 그 문자열을 만드는 최소 통행료를 구합니다.
난이도

어려움10점 중 9점

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

문제

외판원이 된 우현이는 11번부터 NN번까지 번호가 매겨진 마을을 모두 방문해야 한다. 우현이는 지금 11번 마을에 있다. 마을 사이에는 MM개의 도로가 있고, 같은 두 마을을 잇는 도로는 최대 한 개다. 도로에는 두 가지 특징이 있다. 첫째, 도로마다 11 이상 99 이하의 숫자가 적힌 표지판이 하나씩 있다. 둘째, 도로마다 통행료가 있는데, 도로를 처음 지날 때만 낸다. 같은 도로를 다시 지나면 통행료는 들지 않는다.

우현이는 도로를 지날 때마다 그 표지판의 숫자를 핸드폰에 적는다. 입력할 때 커서를 원하는 위치에 둘 수 있으므로, "321"을 적은 상태에서 표지판 숫자가 4인 도로를 지나면 "3421"이나 "3214"를 만들 수 있다. 다만 이미 지난 적이 있는 도로의 표지판 숫자는 다시 적지 않는다.

우현이는 통행료를 내지 못하는 일은 없지만, 필요 이상으로 돈을 내고 싶지는 않다. 그래도 핸드폰에 적히는 수는 최대한 작아야 한다고 생각한다. 모든 마을을 방문하는 동안 핸드폰에 적을 수 있는 수의 최솟값과, 그 수를 적기 위해 드는 통행료의 최솟값을 구하라.

입력

첫째 줄에 마을의 수 NN과 도로의 수 MM이 공백으로 구분되어 주어진다. (1≤N≤200 0001 \le N \le 200\,000, 1≤M≤500 0001 \le M \le 500\,000)

다음 MM개의 줄에는 도로의 정보 x y z wx\, y\, z\, w가 공백으로 구분되어 주어진다. 이는 xx번 마을과 yy번 마을이 도로로 연결되어 있고, 그 도로에는 zz가 적힌 표지판이 있으며 통행료가 ww원임을 뜻한다. (1≤x,y≤N1 \le x, y \le N, x≠yx \ne y, 1≤z≤91 \le z \le 9, 0≤w≤1060 \le w \le 10^6)

출력

마을 NN개를 전부 방문하는 것이 불가능하면 첫째 줄에 -1을 출력한다.

가능하면 첫째 줄에 마을 NN개를 전부 방문하면서 핸드폰에 적을 수 있는 수의 최솟값과, 그 수를 적을 때 지불해야 하는 통행료의 최솟값을 공백으로 구분하여 출력한다.

예제2

  1. 예제 1

    입력
    5 7
    2 3 7 10
    1 2 5 20
    3 1 4 30
    3 5 1 15
    4 2 9 50
    4 5 9 35
    2 5 2 40
    
    예상 출력
    1249 120
    
  2. 예제 2

    입력
    5 4
    1 2 1 1000
    2 3 2 1000
    3 1 3 1000
    4 5 4 1000
    
    예상 출력
    -1