题目链接:https://www.lanqiao.cn/problems/110/learning/
蓝桥杯2017国赛题,并查集的模板题,建议考前热热手
上代码
#include<bits/stdc++.h> using namespace std; #define ll long long ll m,n,k; struct guanxi{ int u; int v; }; guanxi mapt[100010]; ll zufu[1000010]; ll root(ll x) { while(x!=zufu[x]) x=zufu[x]; return x; } void kruskal() { ll i; for(i=1;i<=m*n;i++) zufu[i]=i; for(i=1;i<=k;i++) { int x=root(mapt[i].u); int y=root(mapt[i].v); if(x!=y) { zufu[y]=x; } } ll cnt=0; for(i=1;i<=m*n;i++) if(zufu[i]==i) cnt++; cout<<cnt; } int main() { ll a,b; cin>>m>>n>>k; for(ll i=1;i<=k;i++) { cin>>a>>b; mapt[i].u=a; mapt[i].v=b; } kruskal(); }