만드는 중입니다

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

독이 든 미로

시간 제한3초메모리 제한2048 MB

요약
가중치가 있는 트리와 독 약병 쌍이 주어질 때, 모든 독을 해독하고 시작 정점으로 돌아오는 최소 이동 거리를 구합니다.
난이도

어려움10점 중 8점

유형
트리, DFS, 그리디
정답자
아직 제출이 없습니다

문제

BThero는 정점 nn개와 간선 n−1n-1개로 이루어진 트리 모양의 미로에서 탈출해야 합니다. 각 간선에는 길이가 있습니다. 정점에는 독약 병이 총 2m2m개 놓여 있으며, 독약은 mm종류이고 종류마다 병이 2개씩 있습니다.

BThero는 어떤 정점에 처음 들어가면 그 정점의 병을 모두 즉시 마십니다. 이미 방문한 정점에 다시 들어가면 그 정점에는 마실 병이 남아 있지 않습니다.

아직 마시지 않은 종류의 독약을 마시면 중독됩니다. 해독하려면 같은 종류의 나머지 병을 찾아 마셔야 합니다.

BThero는 정점 ss에서 출발해 그 정점의 병을 바로 마십니다. 이후 중독되지 않은 상태가 될 때까지 정점들을 지나다니고, 그 뒤에 정점 ss로 돌아와 미로를 떠납니다.

최적의 경로를 택했을 때 BThero가 이동하는 총 거리가 가장 짧아지는 시작 정점 ss를 구하세요.

입력

첫 줄에 정수 nn과 mm이 주어집니다 (2≤n≤2⋅1052 \le n \le 2 \cdot 10^5, 1≤m≤2⋅1051 \le m \le 2 \cdot 10^5). 각각 정점의 수와 독약 종류의 수입니다.

다음 n−1n-1개의 줄에는 정수 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의 양방향 간선입니다.

다음 mm개의 줄에는 정수 aja_j와 bjb_j가 주어집니다 (1≤aj,bj≤n1 \le a_j, b_j \le n). 독약 종류 jj의 병 두 개가 놓인 정점입니다. aj=bja_j = b_j일 수도 있습니다. 이 경우 BThero는 그 정점에 들어가는 순간 중독되고 바로 해독됩니다.

출력

최적의 정점에서 출발했을 때 모든 독을 해독하기 위해 BThero가 이동해야 하는 최소 거리를 한 줄에 출력합니다.

예제3

  1. 예제 1

    입력
    4 2
    1 2 1
    1 3 10
    1 4 100
    1 3
    2 4
    
    예상 출력
    20
    
  2. 예제 2

    입력
    5 2
    1 2 1
    1 3 10
    1 4 100
    1 5 1000
    1 3
    2 4
    
    예상 출력
    0
    
  3. 예제 3

    입력
    7 4
    1 2 8
    1 3 9
    2 4 10
    2 5 11
    3 6 12
    3 7 13
    2 3
    7 6
    2 1
    4 5
    
    예상 출력
    34