2678 - Worst Reporter
时间限制 : 2 秒
内存限制 : 1024 MB
水獭乌苏太郎是一名报社记者,正在报道附近举行的一场大型马拉松比赛。
共有 N 名运动员参加比赛,编号从 1 到 N 。乌苏太郎在报道比赛时,在笔记中记录了如下信息:
- 比赛开始时,N 名运动员位于不同的位置上;
- 比赛过程中,排名变化恰好发生了 M 次:在第 i(1\le i\le M) 次排名变化中,运动员 A_i 和 B_i 交换位置,保证排名变化前两位运动员之间没有其他运动员;
- 没有两个排名变化同时发生。
乌苏太郎想在报纸上刊登一张排名表,表示比赛结束后运动员的排名:排名表是一个长度为 N 的序列 P,其中 P_j 代表排名为 j 的运动员的编号。
然而乌苏太郎并没有记录排名表,也没有记录每次排名变化时哪一方的排名上升(即不知道是 A_i 超过了 B_i 还是反之)。于是他想让你判断是否存在一个排名表,使得不与他记录的信息矛盾;如果存在,他想让你求出字典序最小的排名表。
称一个长度为 N 的排名表序列 a 在字典序上小于另一个长度为 N 的排名表序列 b,当且仅当存在一个 k(1\le k\le N) 满足如下条件:
- a_l=b_l(1 \le l \le k-1);
- a_k
。
输入
第一行输入两个整数 N,M。
接下来 M 行,每行输入两个整数 A_i,B_i。
输出
如果不存在满足条件的排名表,输出一行一个字符串 No
。
如果存在满足条件的排名表:
- 第一行输出一个字符串
Yes
; - 第 j+1(1\le j\le N) 行输出一个整数 P_j,其中 P 表示满足条件且字典序最小的排名表。
样例
输入
5 5 1 2 4 5 3 4 3 5 1 4
输出
Yes 2 4 1 5 3
输入
3 4 1 3 2 3 1 3 2 3
输出
No
输入
8 3 1 8 3 5 4 7
输出
Yes 1 8 2 3 5 4 7 6
提示
【样例解释 #1】
假设比赛开始时,运动员排名为 1,2,3,5,4。
比赛过程如下:
- 在第 1 次排名变化中,运动员 1,2 交换位置,排名变为 2,1,3,5,4;
- 在第 2 次排名变化中,运动员 4,5 交换位置,排名变为 2,1,3,4,5;
- 在第 3 次排名变化中,运动员 3,4 交换位置,排名变为 2,1,4,3,5;
- 在第 4 次排名变化中,运动员 3,5 交换位置,排名变为 2,1,4,5,3;
- 在第 5 次排名变化中,运动员 1,4 交换位置,排名变为 2,4,1,5,3;
最终的排名表 P={2,4,1,5,3}。可以证明这是字典序最小的。
来源
JOIG