만드는 중입니다

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

휴가 계획

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

요약
노선 i의 이동 시간이 2^i분인 철도망에서, 질의마다 두 역 사이 최단 경로에 지나는 중간 역의 수를 구합니다.
난이도

보통10점 중 6점

유형
그래프, 최소 신장 트리, 트리
정답자
아직 제출이 없습니다

문제

하늘이는 휴가 때마다 기차를 타고 집으로 간다. 기찻값을 지원받으려면 어떤 기차역을 거치는지 알아야 하므로, 하늘이는 미리 휴가 계획을 세우기로 했다.

기차역은 NN개 있고, 이를 잇는 노선은 MM개 있다. 각 노선은 서로 다른 두 기차역을 양방향으로 잇는다. ii번째 노선은 이동에 2i2^i분이 걸린다. 모든 기차역에서 다른 모든 기차역으로 이동할 수 있다.

휴가 시간을 낭비하지 않으려고 하늘이는 항상 최단 시간이 걸리는 경로를 이용한다. 그러한 경로가 여러 개라면, 거치는 기차역이 가장 적은 경로를 이용한다.

남은 QQ번의 휴가마다 출발하는 기차역과 도착하는 기차역이 주어진다. 각 휴가에서 하늘이가 거쳐야 하는 기차역의 수를 구하라. 단, 출발하고 도착하는 기차역은 세지 않는다.

입력

첫째 줄에 NN과 MM이 공백을 사이에 두고 주어진다. (2≤N≤200 0002\le N\le 200\,000, N−1≤M≤200 000N-1\le M\le 200\,000)

둘째 줄부터 MM개의 줄에 걸쳐 각 노선이 잇는 기차역의 번호 uiu_i, viv_i가 공백을 사이에 두고 주어진다. 해당 노선은 이동에 2i2^i분이 걸린다. 같은 두 기차역을 잇는 노선이 여러 개 있을 수 있다. (1≤ui,vi≤N1\le u_i,v_i\le N, ui≠viu_i\ne v_i, 1≤i≤M1\le i\le M)

M+2M+2번째 줄에 QQ가 주어진다. (1≤Q≤200 0001\le Q\le 200\,000)

M+3M+3번째 줄부터 QQ개의 줄에 걸쳐 출발하는 기차역 sis_i와 도착하는 기차역 eie_i가 공백을 사이에 두고 주어진다. (1≤si,ei≤N1\le s_i,e_i\le N, si≠eis_i\ne e_i, 1≤i≤Q1\le i\le Q)

출력

QQ개의 줄에 걸쳐 각 휴가에 대한 답을 출력한다.

예제2

  1. 예제 1

    입력
    3 3
    1 2
    1 3
    2 3
    3
    1 2
    1 3
    2 3
    
    예상 출력
    0
    0
    1
    
  2. 예제 2

    입력
    4 5
    3 2
    3 4
    2 4
    1 3
    1 2
    6
    1 2
    1 3
    1 4
    2 3
    2 4
    3 4
    
    예상 출력
    1
    0
    1
    0
    1
    0