ARC083(ABC074) D Restoring Road Network
問題概要
次正方行列 が与えられる。すべての について、 の 行 列成分が頂点 と頂点 の最短距離となるようなグラフが存在するかを判定する。また、存在する場合、そのようなグラフのうち辺のコストの総和が最小となるものについて、その総和を求めよ。
制約
のとき
のとき
解法
実質ワーシャルフロイド(?)
- 頂点 から頂点 に行く最短距離が、頂点 から頂点 を経由して頂点 に行く最短距離よりも長いことはありえない*1、もしそうなっていたら、そのようなグラフは存在しないので-1を出力する
- 頂点 から頂点 に行く最短距離が、頂点 から頂点 を経由して頂点 に行く最短距離と等しいならば、頂点 と頂点 の間にある辺は取り除いて良い
を実装する
(2は未証明だけど投げたら通ったのであんまり理解してないです)
*1:距離の公理