만드는 중입니다

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

레인보우 그래프

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

요약
1부터 m까지의 각 k에 대해, 파랑과 초록 간선만으로, 그리고 빨강과 초록 간선만으로 모두 연결되도록 고른 k개 간선의 최소 가중치 합을 구합니다.
난이도

어려움10점 중 8점

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

문제

Roy와 Biv는 정점이 nn개인 무방향 그래프를 갖고 있다. 정점은 1부터 nn까지 번호가 붙어 있다. 각 간선에는 양의 정수 가중치와 색이 있다. 색은 빨강, 초록, 파랑 세 가지뿐이다. 같은 두 정점을 잇는 간선이 여러 개 있을 수 있고, 자기 자신으로 가는 간선도 있을 수 있다.

양의 정수 kk를 정하고, Roy와 Biv는 간선을 정확히 kk개 고른 뒤 나머지 간선을 모두 지운다. 이후 두 사람 모두 그래프가 연결되어 있다고 봐야 한다. Roy는 빨강 간선을 볼 수 없고, Biv는 파랑 간선을 볼 수 없다. 따라서 파랑과 초록 간선만으로 모든 정점이 연결되어야 하고, 빨강과 초록 간선만으로도 모든 정점이 연결되어야 한다.

kk가 1부터 mm까지일 때마다, 두 사람 모두 연결되었다고 볼 수 있는 kk개 간선의 가중치 합의 최솟값을 구하라.

입력

첫 줄에 정수 nn과 mm이 주어진다 (1≤n,m≤1001 \le n, m \le 100). 각각 정점 수와 간선 수이다. 이어지는 mm개의 줄에는 정수 aa, bb (1≤a,b≤n1 \le a, b \le n), 가중치 ww (1≤w≤1,0001 \le w \le 1{,}000), 색 cc (c∈{R,G,B}c \in \{R, G, B\})가 주어진다. 정점 aa와 bb를 잇고 가중치가 ww이며 색이 cc인 간선을 뜻한다.

출력

mm개의 줄을 출력한다. ii번째 줄에는 k=ik = i일 때의 답을 출력한다. Roy와 Biv가 둘 다 그래프를 연결되었다고 볼 수 없으면 -1을 출력한다. 그렇지 않으면 두 사람 모두 연결되었다고 볼 수 있는 kk개 간선 집합의 가중치 합의 최솟값을 출력한다.

예제1

  1. 예제 1

    입력
    5 8
    1 5 1 R
    2 1 2 R
    5 4 5 R
    4 5 3 G
    1 3 3 G
    4 3 5 G
    5 4 1 B
    1 2 2 B
    
    예상 출력
    -1
    -1
    -1
    -1
    15
    14
    17
    22