아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

목초지 산책

면접 대비

시간 제한1초메모리 제한128 MB

요약
가중치가 있는 정점 N개의 트리에서 Q개의 질의가 주어질 때, 각 질의에 해당하는 두 정점 사이 경로의 길이를 구한다.
난이도

보통10점 중 5점

유형
트리, DFS, 누적 합, 그래프
정답자
아직 제출이 없습니다

문제

NN마리의 소가 11번부터 NN번까지 번호가 매겨진 NN개의 목초지에서 풀을 뜯고 있습니다 (2≤N≤1,0002 \le N \le 1{,}000). 편의상 ii번 소는 ii번 목초지에 있습니다.

일부 목초지 쌍은 소들이 지나다닐 수 있는 양방향 산책로로 연결되어 있으며, 산책로는 모두 N−1N-1개입니다. ii번 산책로는 목초지 AiA_i와 BiB_i를 연결하고 (1≤Ai≤N1 \le A_i \le N, 1≤Bi≤N1 \le B_i \le N), 길이는 LiL_i입니다 (1≤Li≤10,0001 \le L_i \le 10{,}000).

산책로는 서로 다른 임의의 두 목초지 사이에 항상 정확히 하나의 경로가 존재하도록 놓여 있습니다. 즉, 산책로들은 하나의 트리를 이룹니다.

소들은 서로 자주 방문하고 싶어 합니다. 목초지 QQ쌍 (1≤Q≤1,0001 \le Q \le 1{,}000)에 대해, 각 질의 p1,p2p_1, p_2 (1≤p1≤N1 \le p_1 \le N, 1≤p2≤N1 \le p_2 \le N, p1≠p2p_1 \ne p_2)를 잇는 경로의 길이를 구해 주세요.

입력

  • 첫째 줄: 두 정수 NN과 QQ가 공백으로 구분되어 주어집니다.
  • 둘째 줄부터 NN번째 줄까지: i+1i+1번째 줄에는 세 정수 AiA_i, BiB_i, LiL_i가 공백으로 구분되어 주어집니다.
  • N+1N+1번째 줄부터 N+QN+Q번째 줄까지: 각 줄에는 소들이 오가려는 서로 다른 두 목초지 p1p_1과 p2p_2가 공백으로 구분되어 주어집니다.

출력

  • ii번째 줄에 ii번째 질의에서 주어진 두 목초지 사이 경로의 길이를 출력합니다. (총 QQ개의 줄)

힌트

  • 첫 번째 질의: 목초지 11과 22를 잇는 산책로의 길이는 22입니다.
  • 두 번째 질의: 목초지 33과 44를 잇는 산책로, 이어서 44와 11을 잇는 산책로, 마지막으로 11과 22를 잇는 산책로를 지나므로 길이는 총 77입니다.

예제3

  1. 예제 1

    입력
    4 2
    2 1 2
    4 3 2
    1 4 3
    1 2
    3 2
    
    예상 출력
    2
    7
    
  2. 예제 2

    입력
    5 3
    1 2 1
    2 3 2
    3 4 3
    4 5 4
    1 5
    2 4
    5 3
    
    예상 출력
    10
    5
    7
    
  3. 예제 3

    입력
    5 3
    1 2 10
    1 3 20
    1 4 30
    1 5 40
    2 3
    4 5
    2 5
    
    예상 출력
    30
    70
    50