問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
この問題集では、最短経路問題を解くアルゴリズムの一つであるベルマンフォード法を扱います。最短経路問題とは、重み付きグラフの与えられた 2 点を結ぶ経路のうち、コスト(距離など)が最小のものを求める問題です。ベルマンフォード法を使うと、グラフのある頂点からそのほかの各頂点への最短距離を求めることができます。この問題集では、いくつかのステップにわけてベルマンフォード法の理解を深めます。
まずは、ある頂点に隣接している頂点をすべて求めてみましょう。
1,...,N の番号のついた N 個の頂点とそれらをつなぐ枝からなる有向グラフを考えます。ただし、自己ループと多重辺は考えません。
M 本の有向枝と頂点番号 s が与えられます。頂点 s から一回の枝の移動で到達可能な頂点の番号を昇順(小さい順)にすべて出力してください。そのような頂点が存在しない場合は -1
と出力してください。
N M s
a_1 b_1
...
a_M b_M
s から一回の枝の移動で到達可能な頂点を左から小さい順に半角スペース区切りで 1 行で出力してください。そのような頂点が存在しない場合は -1
と出力してください。
また末尾に改行をいれ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
5 5 1
1 2
1 3
2 4
4 5
5 2
2 3
5 5 3
1 2
1 3
2 4
4 5
5 2
-1