[CEOI2021] Newspapers
题目背景
译自 CEOI2021 Day1 T3. [Newspapers](https://hsin.hr/ceoi/competition/ceoi2021_day1_tasks.pdf)。
题目描述
Ankica 和 Branko 在一张无向连通图上玩追逐游戏,游戏分为若干个回合,每一回合有如下两步:
- **Ankica 猜测 Branko 现在在哪个结点**。具体地,她将猜测 Branko 在某个特定的结点,如果正确,Branko 被抓住,游戏将会结束,否则:
- **Branko 穿过一条边**。换句话说,Branko将移动到一个相邻的结点,注意他**不能**不移动。
给出这张图,请求出 Ankica 是否总能在有限步内抓到 Branko 且不论 Branko 初始位置在哪以及如何移动。
更形式化地,我们把 Ankica 猜测的策略用 $A=(a_1,a_2,\dots,a_k)$ 表示,其中 $a_i$ 代表她第 $i$ 次猜测 Branko 在 $a_i$ 结点。
相似地,我们把 Branko 的移动也用 $B=(b_1,b_2,\dots,b_k)$ 表示,其中 $b_i$ 代表他在第 $i$ 回合前的位置。此外,对于 $B$ 中任意两个相邻的元素 $b_i$ 和 $b_{i+1}$($1\leq i<k$),$b_i$ 和 $b_{i+1}$ 之间必定有一条边。注意对于 $A$ 没有这样的限制。
我们认为 Ankica 的猜测策略 $A$ 是成功的,当且仅当对于任意合法的 $B$ ,都存在 $i\in[1,k]$ 使得 $a_i=b_i$。
如果存在这样的策略,请输出使得 $k$ 最小的一组策略。
输入输出格式
输入格式
输入第一行包含两个整数 $N$ 和 $M$,代表这张图的点数和边数。
接下来 $M$ 行两个整数 $u_i$,$v_i$,表示图上有一条连接 $u_i$,$v_i$ 的边。
输入保证图上无重边。
输出格式
如果不存在成功的策略 $A$,仅输出一行一个字符串 `NO`。
否则,第一行应输出一个字符串 `YES`。
第二行应输出该策略最小的 $k$。
第三行应包含 $k$ 个整数,其中第 $i$ 个整数表示 $a_i$。
输入输出样例
输入样例 #1
7 6
1 2
1 3
1 4
1 5
1 6
1 7
输出样例 #1
YES
2
1 1
输入样例 #2
6 6
1 2
2 3
3 1
1 4
2 5
3 6
输出样例 #2
NO
说明
#### 样例解释1
![捕获1.PNG](https://cdn.luogu.com.cn/upload/image_hosting/kajahhgy.png)
如果 Branko 初始位于 $1$ 号结点,则他会被抓住,否则他必定会移动到 $1$ 号结点,然后被抓住。
#### 样例解释2
![捕获2.PNG](https://cdn.luogu.com.cn/upload/image_hosting/rtcfz96j.png)
若 Branko 初始在环 $(1,2,3)$ 上且不与 $a_1$ 相同,则根据之后的 $a$ 必定能构造出使 $A$ 不合法的 $B$。
#### 子任务
所有测试点均满足 $1\leq N\leq 1000$,$N-1\leq M\leq \frac{N\times (N-1)}{2}$。
各子任务的约束条件如下:
| 子任务编号 | 分值 | 限制 |
| :--------: | :--: | :----------------------------------------------------------: |
| $1$ | $12$ | $1\leq N\leq 20$ |
| $2$ | $8$ | $1\leq N\leq 1000$,$M=N-1$,且每个结点 $u\in[1,N-1]$ 都与 $u+1$ 有边 |
| $3$ | $80$ | $1\leq N\leq 1000$ |
#### 评分细则
如果你仅能正确回答第一行,则你将得到该测试点 $50\%$ 的分数。
如果对于所有回答 `YES` 的测试点,你能提供一组 $k$ 非最小但正确的策略,你将得到该测试点 $75\%$ 的分数。注意,你提供的策略不能超过 $5N$ 轮,可以证明,任何一组最优策略都不会超出这个限制。
每个子任务的得分等于该子任务内得分最小的测试点得分。