Олимпиадный тренинг

Задача . Reachable Pairs


Задача

Темы:

Рассмотрим неориентированный граф с \(N\) вершинами, помеченными \(1\dots N\) и \(M\) ребрами (\(1\le N\le 2\cdot 10^5, 0\le M\le 4\cdot 10^5\)). Вам дается двоичная строка \(s_1s_2\dots s_N\). в момент времени \(t\) для каждого \(t\in [1,N]\),

  • Если \(s_t=0\), вершина \(t\) удаляется из графа.
  • если \(s_t=1\), вершина \(t\) удаляется из графа и рёбра добавляются каждой парой соседей вершины \(t\) непосредственно перед удалением.

Заметим, что в обоих случаях, когда вершина удаляется из графа, удаляются и все связанные с ней рёбра.

Посчитайте количество пар вершин, которые могут достичь друг друга через некоторую последовательность ребер перед каждым моментом времени \(1\ldots N\).

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(N\) и \(M\).

Вторая строка содержит битовую строку \(s\) длины \(N\).

Каждая из следующих \(M\) строк содержит два целых числа, обозначающих ребро графа.

ФОРМАТ ВЫВОДА (на экран / stdout):

\(N\) строк, количество пар перед каждым моментом времени.


Примеры
Входные данныеВыходные данные
1 3 2
111
1 2
1 3
3
1
0

time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя