만드는 중입니다

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

Dona Minhoca

시간 제한2초메모리 제한512 MB

요약
선인장 그래프에서 각 질의(입구 방, 지렁이 길이)마다 되돌아가지 않는 닫힌 보행이 존재하는지 판정하고, 가능하면 최단 거리를 구한다.
난이도

어려움10점 중 8점

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

문제

Dona Minhoca는 사람들이 지렁이를 머리와 꼬리를 구분할 수 없는 회문 같은 동물이라고 말하는 것을 들으면 화가 난다.

Dona Minhoca는 방과 터널로 이루어진 굴에서 산다. 터널은 서로 다른 두 방을 잇고, 양쪽 방향으로 모두 지날 수 있다. 서로 다른 방 s1,s2,…,sns_1, s_2, \dots, s_n (n≥3n \ge 3)을 나열하고 sn+1=s1s_{n+1} = s_1이라고 둘 때 모든 1≤i≤n1 \le i \le n에 대해 (si,si+1)(s_i, s_{i+1})이 터널이면, 이 나열을 사이클이라고 한다. 굴에는 사이클이 있을 수 있지만, 각 방은 최대 한 개의 사이클에만 속한다. 방과 터널은 좁다. 그래서 Dona Minhoca의 몸 일부가 어떤 방이나 터널을 차지하고 있는 동안에는 그 방이나 터널에 다시 들어갈 자리가 없다.

굴의 일부 방은 지상과 통한다. Dona Minhoca는 각 터널의 길이와 그 터널이 잇는 두 방이 적힌 지도를 가지고 있고, 자기 몸 길이도 안다.

Dona Minhoca는 지상과 통하는 방으로 굴에 들어가서 굴 안을 가능한 한 짧게 지나고 들어간 방으로 다시 나오려 한다. 이때 항상 앞으로만 움직이고 절대 뒤로 물러나지 않는다. 질의마다 이렇게 들어갔다 나오는 것이 가능한지 판정하고, 가능하면 굴 안에서 지나는 최소 거리를 구하라.

입력

첫째 줄에 방의 수 SS와 터널의 수 TT가 주어진다 (2≤S≤1042 \le S \le 10^4, 1≤T≤2S1 \le T \le 2S). 방은 11부터 SS까지의 정수로 구분한다.

다음 TT개 줄에는 터널 하나를 나타내는 세 정수 AA, BB, CC가 주어진다 (1≤A<B≤S1 \le A < B \le S, 1≤C≤1001 \le C \le 100). AA와 BB는 그 터널이 잇는 두 방이고, CC는 터널의 길이다. 한 방은 최대 100개의 다른 방과 터널로 이어지고, 두 방을 잇는 터널은 최대 한 개다. 굴이 하나로 이어져 있다는 보장은 없다.

다음 줄에 질의의 수 QQ가 주어진다 (1≤Q≤1001 \le Q \le 100). 다음 QQ개 줄에는 질의 하나를 나타내는 두 정수 XX와 MM이 주어진다 (1≤X≤S1 \le X \le S, 1≤M≤1051 \le M \le 10^5). XX는 Dona Minhoca가 들어가려는 방이고, MM은 Dona Minhoca의 몸 길이다.

출력

각 질의마다 한 줄에 정수 하나만 출력한다. Dona Minhoca가 뒤로 물러나지 않고 질의로 주어진 방으로 들어가서 같은 방으로 나오기 위해 굴 안에서 지나야 하는 최소 거리를 출력한다. 뒤로 물러나지 않고 들어갔다 나오는 것이 불가능하면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    4 4
    1 2 12
    2 3 10
    3 4 8
    2 4 5
    3
    1 23
    4 10
    1 24
    
    예상 출력
    47
    23
    -1
    
  2. 예제 2

    입력
    8 9
    1 2 1
    2 3 1
    3 4 1
    2 5 10
    5 6 25
    2 6 20
    3 7 9
    7 8 3
    3 8 4
    4
    1 10
    4 60
    8 5
    7 55
    
    예상 출력
    20
    -1
    16
    71