题目描述
N 行 N 列の行列 A=(ai,j) が与えられます。ここで、ai,j ∈ {0,1} が成り立ちます。
また、以下のような有向グラフがあります。
- 頂点数は NK で、各頂点には 1,2,…,NK と番号が付けられている。
- 辺は A を縦 K 行横 K 列に並べて得られる NK 行 NK 列の行列 X=(xi,j) によって表される(入出力例1にて A, K に対応する X が示されている)。具体的には、xi,j=1 ならば頂点 i から頂点 j への有向辺が存在し、xi,j=0 ならば存在しない。
i=1,2,…,Q に対し、次の問題に答えてください。
- 頂点 si から頂点 ti への経路の長さ(辺の本数)の最小値を求めよ。ただし、そのような経路が存在しない場合は代わりに
-1
と出力せよ。
输入格式
入力は以下の形式で標準入力から与えられる。
N K a1,1 … a1,N ⋮ aN,1 … aN,N Q s1 t1 ⋮ sQ tQ
输出格式
Q 行出力せよ。x 行目には、i=x に対する問題の答えを出力せよ。
题目大意
给定 n×n 的 01 矩阵 A。
有向图 G=(V,E) 有 n×k 个点。
将 k2 个 A 矩阵平铺得到一个 (n×k)×(n×k) 的矩阵 B,表示图的边集。
若 i 行 j 列的项为 1,则代表从 i 到 j 有连边。
q 次询问求两点最短路,不存在则输出 −1。
3 2
1 1 1
1 1 0
0 1 0
4
1 2
1 4
1 6
6 3
1
1
1
3
4 1000000000
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1
1 4000000000
-1
提示
制約
- 1 ≤ N ≤ 100
- 1 ≤ K ≤ 109
- ai,j ∈ {0,1}
- 1 ≤ Q ≤ 100
- 1 ≤ si,ti ≤ NK
- si = ti
- 入力はすべて整数
Sample Explanation 1
この例において、辺を表す行列 X は以下のようになります。 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 1 0
Sample Explanation 2
辺が 1 本も存在しません。