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


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

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

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

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

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

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

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

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

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

Примечание
Первый пример: после удаления первой дороги все города все еще находятся в одной сети городов. После удаления второй дороги, сеть городов разбивается на две части: города 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
Please enter comments
Please enter your name.
Please enter the correct email address.
You must agree before submitting.

Answers & Comments


Copyright © 2024 SCHOLAR.TIPS - All rights reserved.