atcoder#ABC168D. [ABC168D] .. (Double Dots)

[ABC168D] .. (Double Dots)

题目描述

あるところに、洞窟があります。

洞窟には N N 個の部屋と M M 本の通路があり、部屋には 1 1 から N N の、通路には 1 1 から M M の番号がついています。通路 i i は部屋 Ai A_i と部屋 Bi B_i を双方向につないでいます。どの 2 2 部屋間も、通路をいくつか通って行き来できます。部屋 1 1 は洞窟の入り口がある特別な部屋です。

洞窟の中は薄暗いので、部屋 1 1 以外の各部屋に 1 1 つずつ道しるべを設けることにしました。各部屋の道しるべは、その部屋と通路で直接つながっている部屋の 1 1 つを指すように置きます。

洞窟の中は危険なので、部屋 1 1 以外のどの部屋についても以下の条件を満たすことが目標です。

  • その部屋から出発し、「いまいる部屋にある道しるべを見て、それが指す部屋に移動する」ことを繰り返すと、部屋 1 1 に最小の移動回数でたどり着く。

目標を達成できる道しるべの配置が存在するか判定し、存在するならばそのような配置を 1 1 つ出力してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M A1 A_1 B1 B_1 : : AM A_M BM B_M

输出格式

目標を達成できる道しるべの配置が存在しなければ No を出力せよ。

存在する場合、N N 行出力せよ。1 1 行目には Yes を、i (2  i  N) i\ (2\ \leq\ i\ \leq\ N) 行目には部屋 i i の道しるべが指す部屋の番号を出力せよ。

题目大意

在某个地方,有一个洞穴。

洞穴中有 NN 个房间和 MM 条通道,房间编号从 11NN,通道编号从 11MM。通道 ii 连接着房间 AiA_i 和房间 BiB_i,可以双向通行。任何两个房间之间都可以通过一些通道来往。房间 11 是一个特殊的房间,那里有洞穴的入口。

因为洞穴内部光线较暗,所以决定在房间1以外的每个房间都设置一个道标。每个房间的道标都会直接指向与该房间通过通道直接相连的一个房间。

由于洞穴内部很危险,对于房间 11 以外的任何房间,目标都是满足以下条件:

从那个房间出发,反复进行"查看当前房间的道标,然后移动到它指向的房间"的操作,可以以最少的移动次数到达房间 11

请判断是否存在可以达成目标的道标配置,如果存在,请输出一种这样的配置。

4 4
1 2
2 3
3 4
4 2
Yes
1
2
2
6 9
3 4
6 1
2 4
5 3
4 6
1 5
6 2
4 5
5 6
Yes
6
5
5
1
1

提示

制約

  • 入力はすべて整数
  • 2  N  105 2\ \leq\ N\ \leq\ 10^5
  • 1  M  2 × 105 1\ \leq\ M\ \leq\ 2\ \times\ 10^5
  • $ 1\ \leq\ A_i,\ B_i\ \leq\ N\ (1\ \leq\ i\ \leq\ M) $
  • Ai  Bi (1  i  M) A_i\ \neq\ B_i\ (1\ \leq\ i\ \leq\ M)
  • どの 2 2 部屋間も、通路をいくつか通って行き来できる

Sample Explanation 1

出力例のように道しるべを置いたとき、 - 部屋 2 2 から出発した場合 (2)  1 (2)\ \to\ 1 1 1 回移動することになり、これが最小です。 - 部屋 3 3 から出発した場合 (3)  2  1 (3)\ \to\ 2\ \to\ 1 2 2 回移動することになり、これが最小です。 - 部屋 4 4 から出発した場合 (4)  2  1 (4)\ \to\ 2\ \to\ 1 2 2 回移動することになり、これが最小です。 したがって、出力例のように道しるべを置けば目標を達成できます。

Sample Explanation 2

答えが複数あり得る場合、どれを出力してもかまいません。