Помогите решить на С++Есть n городов. Они соединяются с поддержкою m

Помогите решить на С++


Есть n городов. Они соединяются с поддержкою m дорог. Дорога объединяет два городка меж собой.

Городка A и B находятся в одной сети городов, если машина от сервера A может по рабочим дорогам доехать до городка B, возможно проходя при этом через промежные городка. Если город может объединиться только с собой, то считается, что он сам по себе представляет сеть городов.

В строительной компании появились нарушители, которые начали ломать дороги. Пока ваш напарник поехал за правительством, вам поручили посчитать приобретенный ущерб компании. Вам необходимо ответить, сколько всего сетей городов в компании появлялось после выведения каждой дороги из строя.

Формат входных данных
В первой строке вводится целое число n (2n310^5) - количество городов в компании.

Во 2-ой строке вводится целое число m (1m310^5) - количество дорог.

В последующих m строках вводятся пары разных чисел a,b (1a,bn) номера городов, которые объединяет i-ая дорога.

В последующей строке вводится число q (1qm) количество сломанных дорог.

В последующей строке вводится q разных чисел номера сломанных дорог. Все номера разны и идут в хронологическом порядке.

Формат выходных данных
Выведите q чисел, количество различных сетей городов после выведения из строя следующего города.

Примечание
Первый пример: после удаления первой дороги все городка все еще находятся в одной сети городов. После удаления 2-ой дороги, сеть городов разбивается на две доли: города 1,3 и город 2.

Sample Input 1:
3
3
1 2
2 3
1 3
2
1 2
Sample Output 1:
1 2
Sample Input 2:
4
3
1 2
1 4
4 2
1
3
Sample Output 2:
2

Задать свой вопрос
Копьев Тема
Что означает "появлялось после выведения каждой дороги из строя"?
Арсений
Имеется в виду, "убрали эту дорогу - прибавилось 2 сети, убрали эту - ещё 1, эту - ещё 1". И так дальше для каждой убранной дороги?
Ойстрак Тимур
С выводом какая-то дичь
Кабаковская Оксана
Почему в первом примере выводится поначалу 1, а потом 2?
Иван Шавокшин
А во втором просто 2?
Зайберг Степан
Если я верно сообразил, то во втором образце ничего выводиться не обязано
Данил Бурдяк
Все, я прозрел
Katja
Я выводил РАЗНИЦУ в количестве, а не само количество
Василиса Казенкова
Код готов
1 ответ
Выкладываю две версии кодряры: сама кодряра, рабочая и прекрасная, и кодяра-алго, для пущего понимания работы кодяры.

Использован метод раскраски вершин графа.

Если будет что неясно, пишите.

Шибулкина Лариса
это да
Владимир Теннисон
я сам про их не знал
Светлана Спербер
)))))
Елизавета Андрышак
как раз по этим х-кам и выбирается алгоритм и структура данных
Гена
там много значений, чтоль?
Borka Potapovskij
да,в условии было что 10^5 значений
Арсений Вокач
3*10^5
Данька
эх, час потел...
Nahhomov Kostja
я же разговариваю, это мои трудности, больше половины задачки он прошел. этого мне хватит
Димка Белозерский
Окончательно если лучше будет, я не против, но мне кажется это излишнее
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт