Time Limit: 2 sec / Memory Limit: 1024 MB
配点: 400 点
問題文
あるところに、洞窟があります。
洞窟には N 個の部屋と M 本の通路があり、部屋には 1 から N の、通路には 1 から M の番号がついています。通路 i は部屋 A_i と部屋 B_i を双方向につないでいます。どの 2 部屋間も、通路をいくつか通って行き来できます。部屋 1 は洞窟の入り口がある特別な部屋です。
洞窟の中は薄暗いので、部屋 1 以外の各部屋に 1 つずつ道しるべを設けることにしました。各部屋の道しるべは、その部屋と通路で直接つながっている部屋の 1 つを指すように置きます。
洞窟の中は危険なので、部屋 1 以外のどの部屋についても以下の条件を満たすことが目標です。
- その部屋から出発し、「いまいる部屋にある道しるべを見て、それが指す部屋に移動する」ことを繰り返すと、部屋 1 に最小の移動回数でたどり着く。
目標を達成できる道しるべの配置が存在するか判定し、存在するならばそのような配置を 1 つ出力してください。
制約
- 入力はすべて整数
- 2 \leq N \leq 10^5
- 1 \leq M \leq 2 \times 10^5
- 1 \leq A_i, B_i \leq N\ (1 \leq i \leq M)
- A_i \neq B_i\ (1 \leq i \leq M)
- どの 2 部屋間も、通路をいくつか通って行き来できる
入力
入力は以下の形式で標準入力から与えられる。
N M A_1 B_1 : A_M B_M
出力
目標を達成できる道しるべの配置が存在しなければ No
を出力せよ。
存在する場合、N 行出力せよ。1 行目には Yes
を、i\ (2 \leq i \leq N) 行目には部屋 i の道しるべが指す部屋の番号を出力せよ。
入力例 1
4 4 1 2 2 3 3 4 4 2
出力例 1
Yes 1 2 2
出力例のように道しるべを置いたとき、
- 部屋 2 から出発した場合 (2) \to 1 と 1 回移動することになり、これが最小です。
- 部屋 3 から出発した場合 (3) \to 2 \to 1 と 2 回移動することになり、これが最小です。
- 部屋 4 から出発した場合 (4) \to 2 \to 1 と 2 回移動することになり、これが最小です。
したがって、出力例のように道しるべを置けば目標を達成できます。
入力例 2
6 9 3 4 6 1 2 4 5 3 4 6 1 5 6 2 4 5 5 6
出力例 2
Yes 6 5 5 1 1
答えが複数あり得る場合、どれを出力してもかまいません。
Score: 400 points
Problem Statement
There is a cave.
The cave has N rooms and M passages. The rooms are numbered 1 to N, and the passages are numbered 1 to M. Passage i connects Room A_i and Room B_i bidirectionally. One can travel between any two rooms by traversing passages. Room 1 is a special room with an entrance from the outside.
It is dark in the cave, so we have decided to place a signpost in each room except Room 1. The signpost in each room will point to one of the rooms directly connected to that room with a passage.
Since it is dangerous in the cave, our objective is to satisfy the condition below for each room except Room 1.
- If you start in that room and repeatedly move to the room indicated by the signpost in the room you are in, you will reach Room 1 after traversing the minimum number of passages possible.
Determine whether there is a way to place signposts satisfying our objective, and print one such way if it exists.
Constraints
- All values in input are integers.
- 2 \leq N \leq 10^5
- 1 \leq M \leq 2 \times 10^5
- 1 \leq A_i, B_i \leq N\ (1 \leq i \leq M)
- A_i \neq B_i\ (1 \leq i \leq M)
- One can travel between any two rooms by traversing passages.
Input
Input is given from Standard Input in the following format:
N M A_1 B_1 : A_M B_M
Output
If there is no way to place signposts satisfying the objective, print No
.
Otherwise, print N lines. The first line should contain Yes
, and the i-th line (2 \leq i \leq N) should contain the integer representing the room indicated by the signpost in Room i.
Sample Input 1
4 4 1 2 2 3 3 4 4 2
Sample Output 1
Yes 1 2 2
If we place the signposts as described in the sample output, the following happens:
- Starting in Room 2, you will reach Room 1 after traversing one passage: (2) \to 1. This is the minimum number of passages possible.
- Starting in Room 3, you will reach Room 1 after traversing two passages: (3) \to 2 \to 1. This is the minimum number of passages possible.
- Starting in Room 4, you will reach Room 1 after traversing two passages: (4) \to 2 \to 1. This is the minimum number of passages possible.
Thus, the objective is satisfied.
Sample Input 2
6 9 3 4 6 1 2 4 5 3 4 6 1 5 6 2 4 5 5 6
Sample Output 2
Yes 6 5 5 1 1
If there are multiple solutions, any of them will be accepted.