C++代码 ↓ ↓
#include<iostream>
using namespace std;
int n;
int find(int x,int (&f)[]){
if(f[x]==x) return x;
return f[x]=find(f[x],f);
}
void merge(int x,int y,int (&f)[]){
int fx=find(x,f),fy=find(y,f);
f[fy]=fx;
return;
}
int main(){
int n,m,p,x,y,ans=0;
cin>>n>>m;
cin>>p;
int f[n*m+1];
bool fa[p+1]={false};
for(int i=1;i<=n*m;i++){
f[i]=i;
}
for(int i=1;i<=p;i++){
cin>>x>>y;
merge(x,y,f);
}
for(int i=1;i<=n*m;i++){
if(!fa[find(i,f)]){
ans++;
fa[find(i,f)]=true;
}
}
cout<<ans;
return 0;
}