問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
1, ..., N の番号がついた N 個の頂点とそれらをつなぐ枝からなる有向グラフを考えます。ただし、自己ループと多重辺は考えません。
頂点 X と Y が与えられます。その後、M 本の重み付き有向枝が与えられます。前問までは、与えられる枝の重みはすべて正でしたが、本問では重みが負の枝も入力されます。与えられたグラフに負閉路が存在するならば Inf
と出力し、そうでなければ X から Y への最短距離を出力してください。
ただし、経路(枝の集合)の距離とはその経路を構成する枝の重みの和とします。ある頂点からその頂点自身へ移動する場合は、その区間の重みを 0 とします。また経路が存在しない場合は、その距離を 999
としてください。
負閉路とは、枝の重みの総和が負となる閉路のことを言います。一般的に、負閉路が存在するグラフでは最短経路問題を解くことはできません。なぜなら、負閉路を移動し続ければいくらでも最短距離を短くすることができるからです。
N M X Y
a_1 b_1 c_1
...
a_M b_M c_M
1 行で出力してください。与えられたグラフに負閉路が存在するならば Inf
、そうでなければ X から Y への最短距離を出力してください。
また末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
4 4 1 2
1 2 1
2 3 1
3 4 1
4 1 -5
Inf
5 7 1 5
1 2 4
1 3 9
2 4 -1
4 5 3
5 2 3
3 4 -2
1 4 -6
-3