아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

내가 어디를 거쳐갔더라?

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

요약
연결된 무향 그래프에서 끝점을 중간에 다시 밟지 않고 a에서 b로 가는 경로가 지나는 정점 수를 질의마다 구합니다.
난이도

어려움10점 중 8점

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

문제

승현이가 사는 마을은 교차로 NN개와 양방향 도로 MM개로 이루어져 있다. 각 도로는 서로 다른 두 교차로를 잇고, 어느 두 교차로 사이든 도로를 하나 이상 지나 오갈 수 있다. 서로 다른 두 교차로를 직접 잇는 도로는 많아야 하나다. 교차로에는 주민 편의를 위해 11번부터 NN번까지 번호를 붙여 두었다.

일요일에 승현이는 자기 집에서 출발해 같은 마을에 사는 친구 민수네 집에 놀러 갔다. 이사 온 지 얼마 되지 않아 도로망을 전혀 몰랐고 자기 집과 민수네 집만 겨우 알아볼 수 있었기 때문에, 한참 헤맨 끝에야 민수네 집에 도착했다. 헤매는 동안 같은 교차로를 여러 번 지나기도 했다.

승현이가 기억하는 것은 두 가지다. 출발한 뒤로는 자기 집이 있는 교차로에 다시 들르지 않았고, 민수네 집이 있는 교차로에 도착하자마자 바로 민수네 집에 들어갔다. 그러니까 승현이가 걸은 길은 자기 집 교차로에서 시작해 민수네 집 교차로에서 끝나고, 그 사이에는 두 교차로 중 어느 쪽도 지나지 않는다. 나머지 교차로는 몇 번을 지나든 상관없다.

승현이는 이 기억과 어긋나지 않는 길 가운데 적어도 하나가 지나는 교차로가 몇 개인지 궁금해졌다. 출발점인 자기 집 교차로와 도착점인 민수네 집 교차로도 지난 교차로로 센다. 지적 호기심이 많은 승현이는 여기서 한발 더 나아가, 자기 집이 aa번 교차로에 있고 민수네 집이 bb번 교차로에 있었다면 그 개수가 몇이었을지도 궁금해졌다.

궁금해하는 승현이를 도와줄 프로그램을 작성하자.

입력

첫 줄에 테스트 케이스의 수 TT (1≤T≤10001 \le T \le 1000)가 주어진다.

각 테스트 케이스의 첫 줄에는 마을의 교차로 수 NN (2≤N≤2000002 \le N \le 200000)과 도로 수 MM (1≤M≤5000001 \le M \le 500000)이 공백으로 구분되어 주어진다. 이어지는 MM개 줄에는 정수 uu와 vv (1≤u,v≤N1 \le u, v \le N, u≠vu \ne v)가 공백으로 구분되어 주어지며, uu번 교차로와 vv번 교차로를 직접 잇는 도로가 있다는 뜻이다. 그다음 줄에는 승현이가 궁금해한 횟수 QQ (1≤Q≤5000001 \le Q \le 500000)가 주어진다. 이어지는 QQ개 줄 가운데 ii번째 줄에는 정수 aia_i와 bib_i (1≤ai,bi≤N1 \le a_i, b_i \le N, ai≠bia_i \ne b_i)가 공백으로 구분되어 주어지며, 승현이네 집이 aia_i번 교차로에, 민수네 집이 bib_i번 교차로에 있는 경우를 묻는다는 뜻이다.

모든 테스트 케이스에서 NN의 합은 200000200000을 넘지 않고, MM의 합과 QQ의 합은 각각 500000500000을 넘지 않는다.

출력

각 테스트 케이스마다 QQ개의 줄을 출력한다. 그중 ii번째 줄에는 ii번째 질문의 답, 즉 승현이네 집이 aia_i번 교차로에 있고 민수네 집이 bib_i번 교차로에 있을 때 승현이가 지났을 가능성이 있는 교차로의 개수를 출력한다. 서로 다른 테스트 케이스 사이에 빈 줄을 출력하면 안 된다.

예제7

  1. 예제 1

    입력
    1
    5 5
    1 2
    1 3
    2 4
    4 5
    2 5
    5
    1 2
    1 4
    2 3
    2 5
    3 5
    
    예상 출력
    2
    4
    3
    3
    5
    
  2. 예제 2

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

    입력
    1
    4 3
    1 2
    2 3
    2 4
    6
    1 3
    3 1
    1 4
    4 3
    2 4
    1 2
    
    예상 출력
    4
    4
    4
    4
    2
    2
    
  4. 예제 4

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

    입력
    1
    6 6
    1 2
    2 3
    3 4
    4 5
    5 6
    1 6
    4
    1 4
    1 2
    2 6
    3 5
    
    예상 출력
    6
    6
    6
    6
    
  6. 예제 6

    입력
    3
    3 2
    1 2
    2 3
    3
    1 3
    3 1
    1 2
    4 4
    1 2
    2 3
    3 4
    4 1
    2
    1 3
    2 4
    2 1
    1 2
    1
    2 1
    
    예상 출력
    3
    3
    2
    4
    4
    2
    
  7. 예제 7

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