선분 친구 (작은 버전)

N개의 선분이 주어질 때 겹치는 선분끼리 간선으로 연결한 그래프를 만들고, 두 선분 사이의 최단 거리를 각 질의마다 답한다.

보통5그래프BFS기하배열면접 대비아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

수직선 위에 선분 NN개가 놓여 있다. 두 선분은 겹치는 부분이 있을 때만 서로 대화할 수 있고, 대화할 수 있는 두 선분은 친구가 된다. 끝점 한 곳에서만 맞닿아도 겹치는 것으로 본다.

위 그림에서 브라운과 코니는 친구이고 문과 제임스도 친구지만, 브라운과 샐리는 친구가 아니다.

선분들은 서로 얼마나 가까운 사이인지 알고 싶어 한다. 문과 레너드는 친구가 아니지만 제임스가 문과도 레너드와도 친구이므로, 문은 레너드의 친구의 친구이다. 같은 식으로 브라운은 샐리의 친구의 친구의 친구의 친구이다. 바로 친구인 사이를 1만큼 가깝다고 하면 문과 레너드는 2만큼, 브라운과 샐리는 4만큼 가깝다. 문은 코니의 친구의 친구이면서 코니의 친구이기도 하므로 문과 코니는 1만큼 가깝다. 즉 두 선분이 가까운 정도는 둘을 잇는 친구 관계의 최소 개수이다.

선분 마을의 시장인 당신은 두 선분이 "우리는 얼마나 가까운 사이야?"라고 물을 때마다 곧바로 답해야 한다. 이 일을 대신 처리하는 프로그램을 작성하라.

입력

첫째 줄에 선분의 수 NN이 주어진다. (2N3002 \le N \le 300)

다음 NN개의 줄에 1번 선분부터 NN번 선분까지 왼쪽 끝 좌표 LiL_i와 오른쪽 끝 좌표 RiR_i가 한 줄에 하나씩 주어진다. (1000000LiRi1000000-1000000 \le L_i \le R_i \le 1000000)

그다음 줄에 질문의 수 QQ가 주어진다. (1Q3001 \le Q \le 300)

이어지는 QQ개의 줄에 질문하는 두 선분의 번호 AABB가 주어진다. (1A,BN1 \le A, B \le N, ABA \ne B)

출력

질문마다 한 줄에 두 선분이 가까운 정도를 출력한다. 두 선분이 친구 관계로 이어져 있지 않으면 -1을 출력한다.