휴가 계획

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

요약
각 간선의 가중치가 2^i일 때 연결된 그래프에서 두 정점 사이의 최단 경로 중 간선 수가 가장 적은 경로를 여러 질의에 대해 구한다.
난이도

어려움10점 중 9점

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

문제

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

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

소중한 휴가 때 집으로 가는 데에 시간을 낭비할 수는 없기 때문에, 하늘이는 항상 최단 시간이 걸리는 경로를 이용한다. 그러한 경로가 여러 개라면, 거치는 기차역이 가장 적은 경로를 이용한다.

하늘이에게 남은 QQ번의 휴가에 대해서 각 휴가마다 출발하는 기차역과 도착하는 기차역이 주어졌을 때, 몇 개의 기차역을 거쳐야 하는지 구해주자. 단, 출발하고 도착하는 기차역은 세지 않는다.

입력

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

둘째 줄부터 MM개의 줄에 걸쳐 각 노선이 잇는 기차역의 번호를 나타내는 정수 u_iu\_i, v_iv\_i가 공백을 사이에 두고 주어진다. 해당 노선은 이동에 2i2^i분이 걸린다. 같은 기차역을 잇는 노선이 여러 개 존재할 수 있음에 유의하시오. (1≤u_i,v_i≤N;(1\le u\_i,v\_i\le N; u_i≠v_i;u\_i\neq v\_i; 1≤i≤M)1\le i\le M) 

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

 M+3M+3번째 줄부터 QQ개의 줄에 걸쳐 출발하는 기차역과 도착하는 기차역의 번호를 나타내는 정수 s_i,e_is\_i,e\_i가 공백을 사이에 두고 주어진다. (1≤s_i,e_i≤N;(1\le s\_i,e\_i\le N; s_i≠e_i;s\_i\neq e\_i; 1≤i≤Q)1\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