선분 N개가 주어질 때 교차 그래프에서 두 선분 사이 최단 거리를 Q번 구하고, 연결되지 않으면 -1을 출력한다.
어려움8그래프BFS정렬누적 합아직 제출이 없습니다시간 제한2초메모리 제한256 MB수직선 위에 N개의 선분이 살고 있다. 두 선분은 공통으로 가지는 점이 하나라도 있을 때만 대화할 수 있어서, 그런 두 선분끼리만 친구가 되었다. 끝점 하나만 맞닿아도 공통점이 있는 것으로 본다.

위 그림에서 브라운과 코니는 친구가 되었고 문과 제임스도 친구가 되었지만, 브라운과 샐리는 친구가 되지 못했다.
선분들은 자신들이 얼마나 가까운 사이인지 확인해보려고 한다. 문과 레너드는 친구가 아니지만 제임스가 문, 레너드와 모두 친하므로 문은 레너드의 친구의 친구다. 비슷하게 브라운은 샐리의 친구의 친구의 친구의 친구다. 친구 사이를 1만큼 가깝다고 하면, 문과 레너드는 2만큼 가깝고 브라운과 샐리는 4만큼 가깝다. 문은 코니의 친구의 친구이기도 하지만 코니의 친구이기도 하므로, 문과 코니는 1만큼 가깝다.
선분 마을의 시장인 당신은 두 선분이 "우리가 얼마나 가까운 사이야?"라고 물어볼 때마다 바로 답해야 한다. 즉 질문으로 주어진 두 선분 A, B에 대해 A에서 친구 관계를 따라 B까지 가는 데 필요한 최소 횟수를 구하는 프로그램을 작성하라.
첫째 줄에 선분의 수 N이 주어진다. (2≤N≤150000)
다음 N개의 줄에는 1번부터 N번까지 각 선분의 왼쪽 끝 좌표 Li와 오른쪽 끝 좌표 Ri가 공백을 사이에 두고 주어진다. (−1000000≤Li≤Ri≤1000000)
그다음 줄에 질문의 수 Q가 주어진다. (1≤Q≤150000)
마지막 Q개의 줄에는 질문하는 두 선분의 번호 A와 B가 주어진다. (1≤A,B≤N, A=B)
질문마다 한 줄에 두 선분이 가까운 정도를 출력한다. 친구 관계를 아무리 따라가도 두 선분이 이어지지 않으면 -1을 출력한다.