解法
、
それぞれを始点とする任意の頂点への最短距離をあらかじめ求めておきます。
から頂点
への最短距離を
,
から頂点
の最短距離を
とします。また、
と
の距離を
とします。
頂点に辺を張った際、仮に
の順に頂点を通り、問題の条件を満たすとすると、
となるはずです。
ということで、となる
の個数を
ごとに、同様に
となる
の個数を
ごとにあらかじめまとめておき、
となるような
のペアについて、それぞれの個数の積を計算し、その総和を求めれば答えとなります。
また、このとき、が同じ頂点になることはありません(その際、
となり、これは
から
の最短距離が
となってしまい、
が最短距離であることに矛盾します)。同様に、
が重複して数えられることも似たような考えからありえません。