#abc168d. [abc168_d].. (Double Dots)

[abc168_d].. (Double Dots)

问题描述

有一个洞穴。

洞穴里有NN个房间和MM个通道。房间编号为11NN,通道编号为11MM。通道ii双向连接房间AiA_i和房间BiB_i。通过穿越通道可以在任意两个房间之间移动。房间11是一个从外部进入的特殊房间。

洞穴里面很黑暗,因此我们决定在每个房间里放置一个指示牌,除了房间11。每个房间的指示牌将指向与该房间通过通道直接相连的房间之一。

由于洞穴里很危险,我们的目标是对除了房间11以外的每个房间满足以下条件。

  • 如果你从那个房间开始,并反复移动到指示牌指示的房间,最少穿越通道数后你将到达房间11

确定是否有办法满足我们的目标,并且如果存在,则打印出一种可行方案。

约束条件

  • 输入中的所有值都是整数。
  • 2N1052 \leq N \leq 10^5
  • 1M2×1051 \leq M \leq 2 \times 10^5
  • 1Ai,BiN (1iM)1 \leq A_i, B_i \leq N\ (1 \leq i \leq M)
  • AiBi (1iM)A_i \neq B_i\ (1 \leq i \leq M)
  • 通过穿越通道可以在任意两个房间之间移动。

输入

输入以以下格式从标准输入中给出:

NN MM A1A_1 B1B_1 :: AMA_M BMB_M

输出

如果没有办法满足目标放置指示牌,则打印No

否则,打印NN行。第一行应该包含Yes,第ii(2iN)(2 \leq i \leq N)应该包含表示房间ii中指示牌指示的房间的整数。


示例输入1

4 4
1 2
2 3
3 4
4 2

示例输出1

Yes
1
2
2

如果按照示例输出所描述的方式放置指示牌,将会发生以下情况:

  • 从房间22开始,经过一条通道到达房间11(2)1(2) \to 1。这是最少穿越通道数的方案。
  • 从房间33开始,经过两条通道到达房间11(3)21(3) \to 2 \to 1。这是最少穿越通道数的方案。
  • 从房间44开始,经过两条通道到达房间11(4)21(4) \to 2 \to 1。这是最少穿越通道数的方案。

因此,目标得到满足。


示例输入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

如果有多个解决方案,任何一个都会被接受。