DAG LCA
시간 제한1초메모리 제한1024 MB
DAG가 주어지고, 각 질의 (u, v)마다 u와 v 모두로 가는 경로가 있는 정점 w 중 두 최단 경로 길이의 최댓값을 최소화하는 값을 구하고, 그런 정점이 없으면 -1을 출력한다.
문제
무가중치 방향 비순환 그래프 가 주어진다. 다음 쿼리를 수행하는 프로그램을 작성하시오.
- : 두 정점 와 로 가는 경로가 모두 존재하는 모든 정점에 대해 와 로 가는 두 최단 경로의 길이 중 작지 않은 값의 최솟값을 출력한다. 두 정점 와 로 가는 경로가 존재하는 정점이 없다면 대신
-1을 출력한다.
입력
첫 번째 줄에 그래프 의 정점의 개수 , 간선의 개수 , 질의의 개수 가 공백으로 구분되어 주어진다. ()
두 번째 줄부터 개의 줄에 걸쳐 간선으로 연결된 두 정점의 번호 , 가 한 줄에 하나씩 주어진다. 이는 에서 로 향하는 방향의 간선을 의미한다. ()
번째 줄부터 개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다.
입력으로 주어지는 값은 모두 정수이며 무가중치 방향 비순환 그래프인 경우만 주어진다.
출력
쿼리가 주어질 때마다 쿼리의 답을 한 줄에 하나씩 출력한다.