그래프 곱셈
시간 제한2초메모리 제한1024 MB
두 그래프의 데카르트적, 텐서적, 강적 곱에서 G_11과 G_pq 사이 최단경로 길이를 묻는 쿼리에 답한다.
문제
그래프 이론에서 두 그래프의 적(곱)연산은 여러 가지가 정의되어 있는데, 대표적으로는 데카르트적, 텐서적, 강적이 있다. 이들의 정의는 다음과 같다.
정점이 개인 그래프 의 정점을 , 정점이 개인 그래프 의 정점을 라 하자. 이때, 두 그래프를 곱한 새로운 그래프 는 개의 정점을 가진다. 각 정점에 다음과 같은 번호를 붙이자: .
이때, 연산별로 간선은 다음과 같이 정의된다.
- 데카르트적: ()에 대해 와 가 인접하다면 에 대해 와 가 인접하고, ()에 대해 와 가 인접하다면 에 대해 와 가 인접하다.
- 텐서적: , (, )에 대해 와 가 인접하고 와 가 인접하다면 와 이 인접하다.
- 강적: , 에 대해 와 이 데카르트적에서 인접하거나 텐서적에서 인접하다면 인접하다.
예를 들어, 아래 그림 1에서 왼쪽 두 그래프를 데카르트적 연산하면 오른쪽 그래프의 9개 정점과 파란색 실선으로 된 간선, 텐서적 연산하면 9개 정점과 빨간색 점선으로 된 간선을 얻는다.

[그림 1] 데카르트적, 텐서적, 강적을 그림으로 나타낸 예시.
이때, 두 그래프 와 가 주어지면 이 그래프에 대해 다음과 같은 쿼리 개에 대한 답을 출력하는 프로그램을 구현하시오.
1 p q: 그래프 와 의 데카르트적 에 대해 두 정점 와 사이의 최단경로의 길이를 출력하여라. 경로가 없다면-1을 출력하여라.2 p q: 그래프 와 의 텐서적 에 대해 두 정점 와 사이의 최단경로의 길이를 출력하여라. 경로가 없다면-1을 출력하여라.3 p q: 그래프 와 의 강적 에 대해 두 정점 와 사이의 최단경로의 길이를 출력하여라. 경로가 없다면-1을 출력하여라.
입력
첫 번째 줄에 그래프 의 정점의 개수 과 간선의 개수 가 공백으로 구분되어 주어진다.
두 번째 줄부터 개의 줄 중 번째 줄에 그래프 의 번째 간선이 잇는 두 정점의 번호 와 가 공백으로 구분되어 주어진다.
그다음 줄에 그래프 의 정점의 개수 과 간선의 개수 가 공백으로 구분되어 주어진다.
그다음 줄부터 개의 줄 중 번째 줄에 그래프 의 번째 간선이 잇는 두 정점의 번호 와 가 공백으로 구분되어 주어진다.
그다음 줄에 쿼리의 개수 가 주어진다.
그다음 줄부터 개의 줄에 쿼리가 한 줄에 하나씩 주어진다. 쿼리의 형식은 지문을 참고하여라.
주어지는 모든 입력은 정수이다.
출력
각 개의 쿼리에 대한 답을 한 줄에 하나씩 출력하여라.
제한
- 각 쿼리에 대해, ,
- ()
- ()
- ()
- ()
- 에 대해, 이면
- 에 대해, 이면