![]() |
|
2025年2月8日
情報オリンピック日本委員会
|
カワウソのウソ太郎は新聞記者であり,近くで開かれる大規模なマラソン大会を取材している.
大会には N 人の選手が参加しており,選手には 1 から N までの番号が付けられている.ウソ太郎はこの大会の取材で,以下の情報をメモに記録した.
ウソ太郎は,各選手の最終的な順位を表す順位表を新聞に載せたい.順位表は長さ N の数列であり,j 番目 (1 ≦ j ≦ N) の値は最終的に j 位になった選手の番号である.
しかしウソ太郎は,順位表を記録していなかったどころか,各順位変動でどちらが順位を上げた側であったかも記録していなかった.そこでウソ太郎は,メモの情報に矛盾しないような順位表のうち,辞書順で最小のものを選んで報告することにした.
数列 (a1, a2, …, aN) が数列 (b1, b2, …, bN) よりも辞書順で小さいとは,ある整数 k (1 ≦ k ≦ N) が存在し,以下の条件をともに満たすことをいう.
選手の人数 N,およびメモに記録された各順位変動の情報が与えられたとき,メモの情報に矛盾しないような順位表が存在するか判定し,もし存在する場合はそのうち辞書順で最小のものを出力するプログラムを作成せよ.
入力は以下の形式で与えられる.
N M
A1 B1
A2 B2
︙
AM BM
メモの情報に矛盾しないような順位表が存在しない場合,1 行で No
と出力せよ.
メモの情報に矛盾しないような順位表が存在する場合,そのうち辞書順で最小のものを以下の形式で N+1 行で出力せよ.
Yes
を出力せよ.
入力例 1
5 5
1 2
4 5
3 4
3 5
1 4
出力例 1
Yes
2
4
1
5
3
大会の開始時点において,順位ごとの選手の番号は 1 位から順に (1,2,3,5,4) であるとする.
このとき,5 回の順位変動で,順位は以下のように変化する.
したがって,最終的な順位表は (2,4,1,5,3) となる.
メモの情報に矛盾しないような順位表のうち,(2,4,1,5,3) よりも辞書順で小さいものは存在しない.したがって,(2,4,1,5,3) を出力する.
この入力例は小課題 1, 3, 5 の制約を満たす.
入力例 2
3 4
1 3
2 3
1 3
2 3
出力例 2
No
メモの情報に矛盾しないような順位表は存在しない.
この入力例は小課題 1, 3, 5 の制約を満たす.
入力例 3
8 3
1 8
3 5
4 7
出力例 3
Yes
1
8
2
3
5
4
7
6
この入力例はすべての小課題の制約を満たす.
入力例 4
6 5
1 2
1 3
1 4
1 5
1 6
出力例 4
Yes
1
6
5
4
3
2
この入力例は小課題 1, 3, 4, 5 の制約を満たす.