AT_abc168_d [ABC168D] .. (Double Dots)
题目描述
在某个地方,有一个洞窟。
洞窟里有 $N$ 个房间和 $M$ 条通道,房间编号为 $1$ 到 $N$,通道编号为 $1$ 到 $M$。第 $i$ 条通道连接着房间 $A_i$ 和房间 $B_i$,且是双向的。任意两个房间之间都可以通过若干条通道互相到达。房间 $1$ 是洞窟入口的特殊房间。
由于洞窟内光线昏暗,决定在除房间 $1$ 以外的每个房间都设置一个“路标”。每个房间的路标会指向与该房间直接通过通道相连的某一个房间。
由于洞窟内部危险,希望对于除房间 $1$ 以外的每个房间,都满足以下条件:
- 从该房间出发,不断“查看当前房间的路标,并移动到路标所指的房间”,能够以最少的移动次数到达房间 $1$。
请判断是否存在一种满足目标的路标设置方法。如果存在,请输出其中一种方案。
输入格式
输入以如下格式从标准输入读入。
> $N$ $M$
> $A_1$ $B_1$
> $A_2$ $B_2$
> $\vdots$
> $A_M$ $B_M$
输出格式
如果不存在满足目标的路标设置方法,输出 `No`。
如果存在,输出 $N$ 行。第 $1$ 行输出 `Yes`,第 $i$ 行($2 \leq i \leq N$)输出房间 $i$ 的路标所指向的房间编号。
说明/提示
### 限制条件
- 所有输入均为整数。
- $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)$
- 任意两个房间之间都可以通过若干条通道互相到达。
### 样例解释 1
如输出样例所示设置路标时:
- 从房间 $2$ 出发,$(2) \to 1$,移动 $1$ 次,为最小值。
- 从房间 $3$ 出发,$(3) \to 2 \to 1$,移动 $2$ 次,为最小值。
- 从房间 $4$ 出发,$(4) \to 2 \to 1$,移动 $2$ 次,为最小值。
因此,按照输出样例设置路标即可满足目标。
### 样例解释 2
如果存在多种满足条件的方案,输出其中任意一种均可。
由 ChatGPT 4.1 翻译