eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Сгорание и компоненты связности

Сгорание и компоненты связности

Однажды Вы наблюдали, как сгорает граф -- это очень интересный процесс. Сначала граф горит, но остаётся связным, потом в какой-то момент он начинает распадаться на отдельные связные куски, а через некоторое время эти отдельные куски совсем сгорают и исчезают. Вам так понравилось смотреть на горение графа, что Вы решили промоделировать его на своём компьютере. Для этого Вам необходимо ответить на такой вопрос: \textit{Сколько компонент связности, состоящих из несгоревших вершин, будет в графе через }\textit{\textbf{i}}\textit{ секунд после поджога}? Причем необходимо найти ответ для каждого \textbf{i} от \textbf{0} до \textbf{K}, где \textbf{K} -- время сгорания последней вершины, которая может сгореть. \InputFile В первой строке числа \textbf{N}, \textbf{M} и \textbf{S} (\textbf{1} ≤ \textbf{N}, \textbf{M} ≤ \textbf{10^5}, \textbf{1} ≤ \textbf{S} ≤ \textbf{N}) -- количество вершин, количество рёбер и номер вершины поджога соответственно. Далее \textbf{M} строк описывают рёбра графа двумя числами \textbf{a} и \textbf{b} (\textbf{1} ≤ \textbf{a}, \textbf{b} ≤ \textbf{N}) -- концами очередного ребра. Граф может содержать кратные ребра и петли. \OutputFile В первой строке выведите число \textbf{K} -- время сгорания последней вершины, которая может сгореть. Считайте, что вершина \textbf{S} подожжена в момент времени \textbf{t=1} сек, и огонь распространяется между любыми двумя смежными вершинами за одну секунду. В следующей строке выведите \textbf{К+1} чисел через пробел, где \textbf{i}-е число означает количество компонент связности, состоящих из вершин, которые еще не сгорели, по окончанию \textbf{i} секунд (\textbf{0} ≤ \textbf{i}≤ \textbf{K}). \textit{\textbf{Пояснение}}: В первом примере в \textbf{0} секунду, то есть до поджигания, граф связный -- количество компонент связности равно \textbf{1}. По окончанию \textbf{1}-й секунды сгорает вершина \textbf{2} и граф распадается на две компоненты связности \textbf{(5)} и \textbf{(1, 3, 4)}. После \textbf{2}-й секунды сгорают вершины \textbf{5}, \textbf{1} и \textbf{3}. Остаётся одна вершина \textbf{4}, которая и образует компоненту связности. После \textbf{3}-й секунды сгорает \textbf{4}-я вершина, и компонент связности нет, так как все вершины сгорели. Во втором примере в \textbf{0} секунду граф состоит из трех отдельных вершин -- \textbf{3} компоненты связности. При поджоге первой вершины, она сгорает в \textbf{1}-ю секунду и остаётся две компоненты связности. Поскольку больше никакие вершины не сгорят, то искомое время сгорания равно \textbf{1}-й секунде.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
5 6 2
1 2
1 3
3 4
2 3
2 2
2 5
Выходные данные #1
3
1 2 1 0
Автор Андрей Селиванов
Источник "Пятёрка за неделю" 05 2013-2014. Поиск в ширину