Помогите решить на С++Есть 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
Использован метод раскраски вершин графа.
Если будет что неясно, пишите.
-
Вопросы ответы
Статьи
Информатика
Статьи
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.
Математика.
Химия.