만드는 중입니다

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

우주 심연 랠리

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

요약
각 질의마다 두 체크포인트를 잇는 경로에서 코스 번호 k에 대한 2^k의 합이 최소가 되는 값을 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

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

문제

치올콥스키 공식에 따르면, 정지 상태에서 속도 vv까지 로켓을 가속하는 데 필요한 연료의 총량은 다음과 같다.

m=m0(evu−1)m = m_0\left(e^{\frac{v}{u}} - 1\right)

여기서 m0m_0은 로켓의 빈 질량이고, uu는 연료의 분사 속도이다. 이 공식은 가속 과정에서 연료 탱크가 완전히 비워지는 경우에만 성립한다.

이 문제에서는 연료 탱크의 용량이 무한하며, m0=1m_0 = 1, u=1u = 1, e≈2e \approx 2, evu≫1e^{\frac{v}{u}} \gg 1이라고 가정한다. 이 경우 로켓을 속도 vv까지 가속하는 데 2v2^{v} 단위의 연료가 든다.

우주 공간에서 랠리가 열린다. 코스는 VV개의 체크포인트와, 체크포인트를 잇는 EE개의 양방향 장애물 코스로 이루어진다. 장애물 코스 kk를 통과하려면 로켓을 속도 kk까지 가속해야 한다.

모든 체크포인트를 통과하려면 로켓이 완전히 멈춰야 한다. 제동에는 연료가 들지 않는다. 연료 탱크는 체크포인트에서 채울 수 있다.

두 체크포인트를 잇는 장애물 코스는 최대 하나이다. 어떤 장애물 코스도 체크포인트를 자기 자신과 잇지 않는다. 어느 체크포인트에서든 장애물 코스를 따라 다른 모든 체크포인트에 도달할 수 있다.

랠리는 QQ개의 구간으로 이루어진다. 각 구간에서는 체크포인트 pp에서 체크포인트 qq까지 이동해야 한다. 각 구간을 통과하는 데 필요한 최소 연료량을 구한다. 연료량이 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

입력

첫 줄에는 공백으로 구분된 정수 세 개가 주어진다. 체크포인트의 수 VV (1≤V≤1051 \le V \le 10^5), 장애물 코스의 수 EE (1≤E≤3⋅1051 \le E \le 3 \cdot 10^5), 구간의 수 QQ (1≤Q≤1051 \le Q \le 10^5)이다.

다음 EE개의 줄에는 각각 공백으로 구분된 정수 aa와 bb (1≤a≤V1 \le a \le V, 1≤b≤V1 \le b \le V)가 주어진다. 이는 체크포인트 aa와 bb가 양방향 장애물 코스로 연결되어 있음을 뜻한다. 파일의 k+1k + 1번째 줄은 장애물 코스 kk를 나타낸다.

다음 QQ개의 줄에는 각각 공백으로 구분된 정수 pp와 qq (1≤p≤V1 \le p \le V, 1≤q≤V1 \le q \le V)가 주어진다. 각 구간이 시작하고 끝나는 체크포인트이다.

출력

QQ개의 줄을 출력한다. 각 줄에는 한 구간을 통과하는 데 필요한 최소 연료량을 출력한다. 답은 입력에 주어진 구간의 순서대로 출력한다.

예제1

  1. 예제 1

    입력
    4 6 3
    1 2
    3 2
    1 3
    4 1
    4 3
    2 4
    4 1
    1 3
    2 3
    
    예상 출력
    16
    6
    4