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. Пошук у ширину