만드는 중입니다

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

배드 버니

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

요약
연결된 그래프에서 각 질의 (s, d)마다 s에서 d로 가는 모든 경로에 공통으로 포함된 정점의 개수를 구합니다.
난이도

보통10점 중 7점

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

문제

마법이 걸리지 않은 숲에 여러분의 텃밭에서 채소를 훔쳐 가는 평범한 토끼가 있습니다. 여러분은 결국 이 토끼를 쫓아가야 합니다. 토끼가 굴을 계속 옮기기 때문에 잡을 방법을 찾기가 쉽지 않습니다. 숲은 여러 공터가 오솔길로 연결된 곳입니다. 오솔길은 공터 두 곳을 정확히 하나씩 잇습니다. 토끼를 쫓을 때 토끼가 이동을 시작하는 곳과 끝나는 곳은 알고 있습니다. 여러분이 알고 싶은 것은 어느 공터에 덫을 놓으면 토끼를 반드시 잡을 수 있는지입니다. 토끼의 출발 공터나 도착 공터에 덫을 놓으면 토끼는 반드시 잡힙니다. (토끼를 다치게 할 생각은 없고, 빼앗긴 채소만 되찾는다고 가정합니다.)

어떤 공터에서든 다른 모든 공터로 토끼가 이동할 수 있습니다.

숲에 대한 설명이 주어졌을 때, 덫을 놓으면 토끼를 확실히 잡을 수 있는 공터의 개수를 구하시오.

입력

첫째 줄에 공터의 수 C (1 ≤ CC ≤ 10510^5)와 오솔길의 수 T (C−1C-1 ≤ TT ≤ 2×1052 \times 10^5)가 주어진다.

다음 T개의 줄에는 공터 a와 b가 오솔길로 연결되어 있다는 정보가 두 정수 a, b로 주어진다 (1 ≤ a, b ≤ C, a ≠ b). 같은 두 공터를 직접 잇는 오솔길은 두 개 이상 없다.

이어서 질의의 수 t (1 ≤ t ≤ 10510^5)가 주어진다. 다음 t개의 줄에는 유효한 두 공터 s와 d가 한 줄에 하나씩 주어진다. 토끼가 s에서 d로 이동할 때 토끼를 잡을 수 있는 공터의 개수를 구한다. 공터 하나에는 덫을 하나만 놓을 수 있다. s와 d는 항상 답에 포함되므로 결과는 최소 2이다.

출력

각 질의마다 토끼가 s에서 d로 이동할 때 덫을 놓아 토끼를 확실히 잡을 수 있는 공터의 개수를 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

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

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