eolymp
bolt
Try our new interface for solving problems
Problems

Вершинное покрытие

Вершинное покрытие

Давайте научимся решать следующую \textbf{NP}-задачу. Вам дан граф и число \textbf{k}. Нужно найти в этом графе такое множество из \textbf{k} вершин, что для каждого ребра данного графа хотя бы один из двух концов ребра лежит в выбранном множестве вершин. \InputFile Первая строка содержит \textbf{3} числа \textbf{n}, \textbf{m} и \textbf{k}, где \textbf{n} --- число вершин в графе, \textbf{m} --- число ребер в графе. Следующие \textbf{m} строк содержат описание ребер графа. Известно, что \textbf{1} ≤ \textbf{k} ≤ \textbf{n} ≤ \textbf{2000}, \textbf{1} ≤ \textbf{m} ≤ \textbf{10^5}. Степень каждой вершины не меньше \textbf{1}. \OutputFile Если требуемое множество существует, на первой строке выведите слово \textbf{Yes}, а на второй \textbf{k} чисел --- номера выбранных вами вершин. Если искомого множества не существует, то выведите слово \textbf{No}. Если возможных ответов несколько, выведите любой. Одну вершину нельзя брать в множество \textbf{2} раза, то есть все \textbf{k} чисел должны быть различны.
Time limit 1 second
Memory limit 256 MiB
Input example #1
9 12 4
1 2
2 3
1 4
4 5
1 6
6 7
1 8
8 9
2 5
4 7
6 9
8 3
Output example #1
Yes
2 4 6 8
Source Winter School, Kharkov, 2011, Day 5