-
题解
社团联系断开记录
-
陈老师
老师
@
2026-8-3 18:28:40
#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;
}