만드는 중입니다

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

최대 가중 매칭

시간 제한4초메모리 제한256 MB

요약
간선을 복사하고 새 정점을 끼워 넣는 연산으로 만들어진 가중치 그래프에서 최대 가중치 매칭의 합과 그 매칭의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그래프, 트리
정답자
아직 제출이 없습니다

문제

치아키는 특별한 그래프를 만드는 데 능숙하다. 처음에는 간선 하나로 연결된 정점 두 개만 있는 그래프가 있다. 매번 치아키는 간선 (u,v)(u,v)를 하나 고르고 그 간선을 복사한 다음, 복사본 사이에 새 정점을 몇 개(0개일 수도 있다) 삽입할 수 있다. 새 정점을 t1,t2,…,tkt_1,t_2,\dots,t_k라고 하면, 그래프에 간선 (u,t1)(u,t_1), (t1,t2)(t_1,t_2), …\dots, (tk−1,tk)(t_{k-1},t_k), (tk,v)(t_k,v)를 추가한다.

이 연산으로 생성된 가중치 그래프에 대해, 치아키는 그래프의 최대 가중 매칭의 가중치 합과 서로 다른 최대 가중 매칭의 개수를 109+710^9+7로 나눈 나머지로 알고 싶어 한다.

매칭은 서로 인접하지 않은 간선들의 집합이며, 루프는 포함될 수 없다. 즉, 어떤 두 간선도 정점을 공유하지 않아야 한다. 최대 가중 매칭은 간선 가중치의 합이 최대인 매칭이다.

입력

테스트 케이스가 여러 개 주어진다. 첫 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 다음과 같다.

첫 줄에 정점 수 nn과 간선 수 mm이 주어진다 (1≤n,m≤1051 \le n, m \le 10^5).

이어서 mm개의 줄에 정수 uiu_i, viv_i, wiw_i가 주어진다 (1≤ui,vi≤n1 \le u_i, v_i \le n, 1≤wi≤1091 \le w_i \le 10^9). 이는 uiu_i와 viv_i를 잇는 가중치 wiw_i의 간선이 있음을 뜻한다.

모든 테스트 케이스에 대한 nn의 합과 mm의 합은 각각 10610^6을 넘지 않는다.

출력

각 테스트 케이스마다 두 정수를 공백으로 구분해 출력한다. 첫 번째 정수는 최대 가중 매칭의 가중치 합이다. 두 번째 정수는 서로 다른 최대 가중 매칭의 개수를 109+710^9+7로 나눈 나머지이다.

예제1

  1. 예제 1

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