問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
この問題集では、最短経路問題を解くアルゴリズムの一つであるワーシャルフロイド法を扱います。最短経路問題とは、重み付きグラフの与えられた 2 点を結ぶ経路のうち、コスト(距離など)が最小のものを求める問題です。ワーシャルフロイド法を使うと、グラフのすべての 2 点間の最短距離を求めることができます。この問題集では、いくつかのステップにわけてワーシャルフロイド法の理解を深めます。
まずは、与えられるグラフを隣接行列に変換してみましょう。
1, ..., N の番号がついた N 個の頂点とそれらをつなぐ枝からなる有向グラフを考えます。ただし、自己ループと多重辺は考えません。
M 本の重み付き有向枝が与えられます。このとき、次のように定義される隣接行列を出力してください。
N × N の正方行列で、上から i 行目、左から j 列目 (1 ≦ i,j ≦ N) の要素が
999
0
N M
a_1 b_1 c_1
...
a_M b_M c_M
合計 N 行出力してください。i (1 ≦ i ≦ N) 行目には、隣接行列の上から i 行目の N 個の整数を左から順に半角スペース区切りで出力してください。
また末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
3 2
1 2 5
2 3 1
0 5 999
999 0 1
999 999 0
5 5
1 2 4
1 3 9
2 4 1
4 5 3
5 2 3
0 4 9 999 999
999 0 999 1 999
999 999 0 999 999
999 999 999 0 3
999 3 999 999 0