atcoder#APC001I. Simple APSP Problem
Simple APSP Problem
题目描述
のマス目が与えられます。 左上隅のマス目を 、右下隅のマス目を と表すことにします。
マス目のうち、 個のマス目 は黒く塗られており、残りは白く塗られています。
白いマス目 の間の最短距離を、 から まで白いマス目のみを使用して移動するときの最短移動回数とします。 ただし、 回の移動では、上下左右の隣りあったマス目に移動できるものとします。
白いマス目は全部で 個あるため、白いマス目から つマス目を選ぶ方法は 通りあります。
この 通りそれぞれについて、選んだマスの間の最短距離を求め、 それを全て足して で割った余りを求めてください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
最短距離の総和を で割った余りを出力してください。
题目大意
给定一个 的网格,网格之间有 的边权。上面有 个位置有障碍,网格大小 ,求所有非障碍点对间的最短路之和。
2 3
1
1 1
20
2 3
1
1 2
16
3 3
1
1 1
64
4 4
4
0 1
1 1
2 1
2 2
268
1000000 1000000
1
0 0
333211937
提示
制約
- ならば、 または
- 白いマス目が つ以上存在する
- 全ての白いマス目 について、白いマス目のみを使用して から へ移動できる
Sample Explanation 1
マス目の色は以下のようになっています(.
: 白いマス目, #
: 黒いマス目)。 ... .#.
ここで,以下のように白いマス目にアルファベットを振ります。 ABC D#E
すると, - dist(A, B) = - dist(A, C) = - dist(A, D) = - dist(A, E) = - dist(B, C) = - dist(B, D) = - dist(B, E) = - dist(C, D) = - dist(C, E) = - dist(D, E) = であり,これらの総和は となります。 ただし,dist(A, B) はマス目A, Bの最短距離とします。
Sample Explanation 2
以下のように白いマス目にアルファベットを振ります。 ABC DE#
すると, - dist(A, B) = - dist(A, C) = - dist(A, D) = - dist(A, E) = - dist(B, C) = - dist(B, D) = - dist(B, E) = - dist(C, D) = - dist(C, E) = - dist(D, E) = であり,これらの総和は となります。