만드는 중입니다

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

던전 크롤러

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

요약
가중치가 있는 트리에서 시작 방 s에서 출발해 모든 방을 방문하는 최소 시간을 구합니다. 함정 방 t보다 먼저 열쇠 방 k를 방문해야 하며, 불가능하면 impossible을 출력합니다.
난이도

보통10점 중 7점

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

문제

Alice와 Bob은 새로운 탈출방을 테스트하는 일을 맡았다. 이 탈출방에서 손님은 던전에 갇혀 던전 전체를 탐험해야 한다. 던전은 nn개의 방이 정확히 n−1n-1개의 통로로 연결되어 있다. 이 통로들을 따라 임의의 두 방 사이를 오갈 수 있다.

던전의 방 중 두 곳은 특별하다. 한 방에는 helix key라 불리는 보호 우상이 있다. 다른 방에는 dome trap이라는 까다로운 함정이 있는데, 이 함정은 한 번 작동하면 플레이어가 움직이지 못하게 만든다. 키를 얻기 전에 함정이 있는 방에 들어가면 플레이어는 던전에 영원히 갇힌다. 플레이어는 키가 있는 방이나 함정이 있는 방에서 시작할 수 없다.

시나리오는 qq개 있다. ii번째 시나리오에서 플레이어는 방 sis_i에서 시작하고, 키는 방 kik_i에, 함정은 방 tit_i에 있다. 각 시나리오에 대해 함정에 갇히지 않고 던전 전체를 탐험하는 데 필요한 최소 시간을 구하라.

입력

첫 줄에 정수 nn과 qq가 주어진다(3≤n≤20003 \le n \le 2000, 1≤q≤2000001 \le q \le 200000). 방은 1부터 nn까지 번호가 매겨진다. 다음 n−1n-1개의 줄에는 각각 세 정수 uu, vv, ww가 주어지며, 이는 방 uu와 vv 사이에 통로가 있고 이를 지나는 데 ww의 시간이 걸린다는 뜻이다(1≤u,v≤n1 \le u, v \le n, u≠vu \neq v, 1≤w≤1091 \le w \le 10^9). 이어서 qq개의 줄이 주어진다. ii번째 줄에는 서로 다른 세 정수 sis_i, kik_i, tit_i가 주어진다(1≤si,ki,ti≤n1 \le s_i, k_i, t_i \le n).

출력

각 시나리오마다 모든 방을 적어도 한 번 방문하는 데 필요한 최소 시간을 출력한다. 모든 방을 적어도 한 번 방문할 수 없다면 impossible을 출력한다.

예제2

  1. 예제 1

    입력
    5 4
    1 2 3
    1 3 1
    3 4 4
    3 5 2
    1 2 4
    1 4 2
    5 2 1
    4 3 1
    
    예상 출력
    15
    17
    impossible
    12
    
  2. 예제 2

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