지도 내보내기 추정

우선순위 임계값마다 낮은 가중치 간선을 지우고 차수가 2인 정점을 번호순으로 축소한 뒤 남은 정점과 간선 수를 셈합니다.

어려움8그래프유니온 파인드정렬아직 제출이 없습니다시간 제한4초메모리 제한512 MB

문제

루카는 지리 정보 회사를 운영한다. 이 회사는 상세한 도시 지도를 관리하고, 그 데이터를 원하는 곳에 내보낸다. 고객 대부분은 지도 전체를 원하지 않는다. 주요 도로만 남긴 간략한 지도를 원한다.

도시 지도는 11번부터 nn번까지 번호가 붙은 교차로 nn개와 양방향 도로 mm개로 이루어진 무향 그래프다. 각 도로에는 우선순위가 하나씩 붙어 있고, 우선순위는 음이 아닌 정수다. 고객은 지도를 요청하면서 기준 우선순위 pp를 고른다. 원본 지도를 복사한 다음, 아래 절차로 내보낼 지도를 만든다.

  1. 우선순위가 pp보다 낮은 도로를 모두 지운다.

  2. 교차로 iii=1,2,,ni = 1, 2, \ldots, n 순서로 하나씩 처리한다.

    1. 교차로 ii에 연결된 도로가 하나도 없으면 교차로 ii를 지운다.

    2. 교차로 ii에 서로 다른 도로 xxyy가 정확히 두 개 연결되어 있고, xx는 교차로 aa로, yy는 교차로 bb로 이어지며 aabb가 모두 ii와 다르면, 다음 절차로 교차로 ii를 축약한다.

      1. 도로 xxyy를 지운다.
      2. 교차로 ii를 지운다.
      3. 교차로 aabb를 잇는 새 도로 zz를 추가한다.

위 그림은 두 번째 예제의 지도에 기준 우선순위 9595를 적용한 모습이다.

처음 지도에는 루프(같은 교차로를 자기 자신과 잇는 도로)도 없고, 같은 교차로 쌍을 잇는 도로가 둘 이상 있지도 않다. 그러나 축약 과정에서는 루프와 평행 도로가 생길 수 있다. 위 2번의 두 번째 규칙에서 xxyy는 루프일 수 없지만(aabb가 모두 ii와 달라야 하므로), 새로 추가하는 도로 zz는 루프가 될 수 있다. aabb가 같을 수 있기 때문이다.

지도와 내보내기 요청이 차례로 주어진다. 각 요청마다 내보낸 지도의 교차로 개수와 도로 개수를 구하라.

입력

첫째 줄에 교차로 개수 nn과 도로 개수 mm이 주어진다. (1n3000001 \le n \le 300\,000, 1m3000001 \le m \le 300\,000)

다음 mm개 줄에는 각각 세 정수 aa, bb, pp가 주어진다. (1a,bn1 \le a, b \le n, 0p3000000 \le p \le 300\,000) 우선순위가 pp인 도로가 교차로 aabb를 잇는다는 뜻이다. 자기 자신을 잇는 도로는 없고, 두 교차로를 잇는 도로는 많아야 하나다.

그다음 줄에 내보내기 요청의 개수 qq가 주어진다. (1q3000001 \le q \le 300\,000)

마지막 줄에 정수 qq개가 주어진다. kk번째 정수 tkt_kkk번째 요청의 기준 우선순위다. (0tk3000000 \le t_k \le 300\,000)

출력

qq개의 줄을 출력한다. kk번째 줄에는 kk번째 요청으로 내보낸 지도의 교차로 개수와 도로 개수를 공백으로 구분해 출력한다.