幅優先探索ドリルのサムネイル
(問題 10)パスグラフ 2 Objective-C編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

整数 N が与えられます。N 個の頂点と N - 1 個の辺があるグラフを与えられます。

i (1 ≦ i ≦ N - 1) 番目の辺は頂点 a_i と頂点 b_i を結んでいます。

2 * N - 2 個の変数 c_1, c_2, ..., c_{N - 1}, d_1, d_2, ..., d_{N - 1} があり、a_i = c_i, b_i = d_i とすると、問題 9 の制約を満たします。

今回の問題では (1, 2, ..., N - 1) の順列で先頭が 1 の配列 P = (P_1 (= 1), P_2, ..., P_{N - 1}) が存在し、 a_i = c_{P_i}, b_i = d_{P_i} であることが保証されます。

つまり、今回のテストケースは以下のように生成されます。gen9 を返り値として問題 9 の制約を満たす N, A = [a_1, a_2, ..., a_{N - 1}], B = [b_1, b_2, ..., b_{N - 1}] を返す関数とし、今回の問題は以下のように生成されます。random1(N, check)を 1 - N で check に入っていない整数をランダムに返す関数とします。


N, C, D = gen9()
A = [c_1]
B = [d_1]
check = [1]
以下を N - 2 回繰り返す
ind = random1(N - 1, check)
check の後ろに ind を入れる
A の後ろに c_ind を入れる
B の後ろに d_ind を入れる


頂点 a_1 から距離が近い順に頂点の番号を出力してください。

入力される値

N
a_1 b_1
a_2 b_2
...
a_{N - 1} b_{N - 1}


1 行目には 1 つの整数 N が与えられます。

1 + i (1 ≦ i ≦ N - 1) 行目には 2 つの整数 a_i, b_i が与えられます。

入力は合計で N 行からなり、入力値最終行の末尾に改行が 1 つ入ります。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

答えを 1 行で出力してください。

それぞれの頂点番号を空白区切りで出力してください。

条件

すべてのテストケースにおいて、以下の条件をみたします。

  • 2 ≦ N ≦ 100

  • 1 ≦ a_i, b_i ≦ N (1 ≦ i ≦ N - 1)

  • a_i ≠ b_i (1 ≦ i ≦ N - 1)

  • d_{i - 1} = c_i (2 ≦ i ≦ N - 1) で (1, 2, ..., N - 1) の順列で先頭が 1 の配列 P = (P_1 (= 1), P_2, ..., P_{N - 1}) が存在し、 a_i = c_{P_i}, b_i = d_{P_i} (1 ≦ i ≦ N - 1) である

  • 与えられるグラフはパスグラフ
  • 入力例1

    5
    1 2
    2 4
    4 3
    3 5

    出力例1

    1 2 4 3 5

    入力例2

    7
    6 2
    2 7
    7 4
    4 3
    3 1
    1 5

    出力例2

    6 2 7 4 3 1 5

    問題一覧へ戻る

    1. paizaトップ
    2. レベルアップ問題集
    3. 幅優先探索ドリル(言語選択)
    4. 問題一覧 Objective-C編
    5. (問題 10)パスグラフ 2 Objective-C編
    ページの先頭へ戻る