并查集模板:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000005;
typedef int ll;
ll a[maxn],f[maxn];
ll find(ll x){
if(x!=f[x]){
f[x]=find(f[x]); //路径压缩
}
return f[x];
}
//ll find(ll x){
// int j=x,y;
// while(j!=f[j]){
// j=f[j];
// }
// int i=x;
// while(f[i]!=j){
// y=f[i];
// f[i]=j;
// i=y;
// }
// return f[x];
//}
ll join(ll x,ll y){
ll fx=find(x);
ll fy=find(y);
if(fx!=fy){
f[fx]=fy;
}
}
int main(){
ll m,n,x,y,k,sum;
cin>>m>>n>>k;
sum=0;
for(int i=1;i<=n*m;i++) f[i]=i;
for(int i=1;i<=k;i++){
cin>>x>>y;
join(x,y);
for(int i=1;i<=n*m;i++){
if(f[i]==i){
sum++;
}
}
cout<<sum<<endl;
return 0;
}