만드는 중입니다

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

항공사

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

요약
트리 형태의 항공 노선망에서 각 질의마다 x와 y를 잇는 항공편을 추가했을 때 최단 거리가 줄어드는 정점 쌍의 수를 구합니다.
난이도

보통10점 중 7점

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

문제

항공사는 서로 다른 공항 nn개를 잇는 정기 항공편을 운항한다. 각 항공편은 두 공항을 직접 연결하며(다른 공항에 들르지 않는다), 양방향으로 이동할 수 있다. 임의의 출발 공항 ss와 도착 공항 tt에 대해, 어떤 공항도 두 번 방문하지 않고 둘을 잇는 항공편 경로가 정확히 하나 존재하도록 배치되어 있다. 이 경로를 이루는 항공편의 수를 ss와 tt 사이의 거리라고 한다.

항공사가 공항 xx와 yy 사이에 항공편을 하나 추가하면, 일부 (s,t)(s, t) 쌍에서 더 짧은 경로가 생길 수 있다. 영향을 받는 쌍이 많을수록 새 노선의 가치가 높다. 항공사는 이 기준으로 추가 후보 (x,y)(x, y) 여러 개를 평가해 달라고 요청했다.

입력

첫 줄에 정수 nn과 qq가 주어진다. 다음 n−1n-1개 줄에는 정수 uiu_i, viv_i가 주어지며, 공항 uiu_i와 viv_i를 잇는 직항 항공편이 기존에 있다는 뜻이다. 마지막 qq개 줄에는 정수 xix_i, yiy_i가 주어진다. ii번째 시나리오에서는 기존 n−1n-1개 항공편에 xix_i와 yiy_i를 잇는 직항 항공편이 추가된다.

출력

qq개 줄을 출력한다. ii번째 줄에는 1≤s<t≤n1 \le s < t \le n을 만족하는 쌍 (s,t)(s, t) 중, 기존 n−1n-1개 항공편에 xix_i와 yiy_i를 잇는 직항 항공편을 추가했을 때 ss와 tt 사이의 거리가 줄어드는 쌍의 개수를 출력한다.

제한

  • 2≤n≤1062 \le n \le 10^6
  • 1≤q≤1051 \le q \le 10^5
  • 1≤ui≤n1 \le u_i \le n; 1≤vi≤n1 \le v_i \le n; ui≠viu_i \ne v_i
  • 1≤xi≤n1 \le x_i \le n; 1≤yi≤n1 \le y_i \le n; xi≠yix_i \ne y_i
  • ∑i=1qdi≤107\sum_{i=1}^{q} d_i \le 10^7. 여기서 did_i는 기존 항공망에서 xix_i와 yiy_i 사이의 거리이다.

예제1

  1. 예제 1

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