#include<bits/stdc++.h>
using namespace std;
struct node {
	int u,v;
} a[200001];
int p[100001];
int ans[200001];
int find(int x) {
	if(p[x]==x) return x;
	return p[x]=find(p[x]);
}
int main() {
	int n,m;
	cin >> n >> m;
	for(int i=1; i<=n; i++) {
		p[i]=i;
	}
	for(int i=1; i<=m; i++) {
		cin >> a[i].u >> a[i].v;
	}
	int cnt=n;
	for(int i=m; i>=1; i--) {
		int fu=find(a[i].u),fv=find(a[i].v);
		if(fu!=fv) {
			p[fu]=fv;
			cnt--;
		}
		ans[i]=cnt;
	}
	for(int i=1; i<=m; i++) cout << ans[i] << '\n';
	cout << n;
	return 0;
}

10 条评论

  • 1