P1197求调
  • 板块灌水区
  • 楼主Sukilin
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/2 12:30
  • 上次更新2024/10/2 16:11:36
查看原帖
P1197求调
959201
Sukilin楼主2024/10/2 12:30
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
const int N = 4e5+3;
int n, m, x, y, p, k, o;
std::vector<int> e[N];
bool del[N];
int f[N], d[N], out[N];
int find(int x){
	return f[x] == x ? x : f[x] = find(f[x]);
}
int main(){
	std::cin >> n >> m;
	for(int i = 1; i <= n; i++) f[i] = i;
	while(m--) {
		std::cin >> x >> y;
		x++, y++;
		e[x].push_back(y);
		e[y].push_back(x);
	}
	std::cin >> k;
	int num = n - k;
	for(int i = 1; i <= k; i++) {
		std::cin >> d[i];
		del[++d[i]] = true;
	}
	for(int i = 1; i <= n; i++)
		if(!del[i])
			for(int j : e[i])
				if(!del[j] && find(i) != find(j)) f[find(i)] = find(j), num--;
	for(int i = k; i >=1 ; i--){
		out[++o] = num;
		int x = d[i];
		del[x] = false;
		num++;
		for(int y : e[x])
			if(!del[y] && find(x) != find(y)) f[find(x)] = find(y), num--;
	}
	for(int i = o; i>=1; i--) std::cout << out[i] <<'\n';
	std::cout << num << '\n';
	
	
	return 0;
}

#7 AC,其他全 WA

2024/10/2 12:30
加载中...