Unter
시간 제한1초메모리 제한1024 MB
집 N개와 도로 N개로 이루어진 연결 그래프에서 최대 100만 개의 최단 거리 질의에 답한다. 사이클이 정확히 하나 존재한다.
문제
Justas는 사람들이 자동차 이동을 함께 나눌 수 있는 앱을 만들려고 합니다. 먼저 두 집 사이의 최단 거리를 찾는 프로그램을 작성해야 합니다.
앱이 동작할 도시에는 번부터 번까지 번호가 매겨진 개의 집이 있습니다. 집들은 개의 양방향 도로로 직접 연결되어 있습니다. 각 도로는 정확히 두 집을 잇고, 어떤 두 집도 최대 한 개의 도로로만 연결됩니다.
Justas는 한 집에서 다른 집으로 같은 집을 두 번 이상 지나지 않고 가는 방법이 오직 하나뿐일 때 두 집 사이의 최단 경로를 찾는 알고리즘을 이미 작성했습니다. 하지만 그런 방법이 두 가지 이상 존재하는 집 쌍에 대해서는 여러분의 도움이 필요합니다.
개의 집 쌍에 대해 최단 거리를 구하세요.
입력
첫 번째 줄에는 집의 수 과 질의의 수 가 주어집니다.
다음 개의 줄에는 각각 공백으로 구분된 두 정수 와 가 주어지며, 이는 집 와 사이에 도로가 있음을 의미합니다.
그 다음 개의 줄에는 각각 공백으로 구분된 두 정수 와 가 주어집니다.
출력
개의 줄을 출력합니다. 번째 줄에는 집 와 사이 최단 경로의 길이를 하나의 정수로 출력합니다. Justas는 두 집 사이의 거리를 지나야 하는 도로의 수로 계산합니다.
제한
- 에서 로, 어떤 집도 두 번 이상 지나지 않는 경로가 (반드시 최단일 필요는 없이) 두 개 이상 존재합니다.
- 임의의 집에서 도로를 따라 다른 어떤 집으로도 항상 이동할 수 있습니다.