A Graph of Fire and Ice (Hard)

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

요약
가중치가 작은 간선부터 제거하되 그래프의 연결을 유지하면서, 같은 색 정점 사이 간선이 최대 하나가 되도록 두 색으로 칠할 수 있는 그래프를 남기는 최소 제거 간선 수를 구한다.
난이도

어려움10점 중 9점

유형
그래프, 유니온 파인드, 그리디, DFS
정답자
아직 제출이 없습니다

문제

이 문제는 NN, MM 제한을 제외하면 A Graph of Fire and Ice (Easy) 문제와 동일한 문제이다.

11부터 NN까지 번호가 붙은 NN개의 정점과, MM개의 간선으로 구성된 연결 무방향 그래프가 주어진다. 각 간선에는 11 이상 MM 이하의 서로 다른 정수 가중치가 하나씩 할당되어 있다.

그래프 GG가 다음 두 조건을 만족할 때, GG를 얼불 그래프라 한다.

  • GG는 연결 그래프이다.
  • GG의 각 정점에 불 또는 얼음의 속성을 부여하여, 같은 속성의 정점들끼리 연결된 간선의 개수가 최대 11개가 되도록 색칠할 수 있다.

대곽이는 주어진 그래프에서 일부 간선을 제거하여, 남은 그래프가 얼불 그래프가 되도록 만들고자 한다. 단, 간선을 제거할 때는 다음의 규칙을 따라야 한다.

  • 가중치가 xx인 간선을 제거하기 위해서는 가중치가 xx보다 작은 모든 간선을 먼저 제거해야 한다.
  • 간선을 제거하는 과정에서 그래프는 항상 연결 그래프로 유지되어야 한다.

제거해야 하는 간선의 최소 개수를 구해 보자.

입력

첫째 줄에는 정점의 개수 NN과 간선의 개수 MM이 공백으로 구분되어 주어진다. (2≤N≤250,000;(2\le N\le 250\\,000; 1≤M≤500,000)1\le M\le 500\\,000)

다음 MM개의 줄의 ii번째 줄에는 ii번째 간선이 연결하는 두 정점의 번호 u_iu\_i, v_iv\_i와 ii번 간선의 가중치 r_ir\_i가 공백으로 구분되어 주어진다. (1≤u_i,v_i≤N;(1\le u\_i,v\_i\le N; 1≤r_i≤M;1\le r\_i\le M; u_i≠v_i)u\_i \ne v\_i)

서로 다른 간선의 가중치가 동일한 경우는 없으며, 하나의 정점 쌍을 연결하는 간선은 최대 11개 존재한다.

출력

제거해야 하는 간선의 최소 개수를 출력한다. 만약 불가능하다면 -1을 출력한다.

예제4

  1. 예제 1

    입력
    7 9
    1 2 1
    1 4 2
    1 6 3
    2 3 4
    4 5 5
    6 7 6
    1 3 7
    1 5 8
    1 7 9
    
    예상 출력
    2
    
  2. 예제 2

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

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

    입력
    5 6
    1 2 2
    2 3 6
    5 3 5
    3 4 1
    4 5 4
    3 1 3
    
    예상 출력
    1