#include<bits/stdc++.h>
using namespace std;
const int maxn=10000010;
int m,n;
long long a,b,c,d;
long long fa[maxn];
int convert(int x,int y){
return x*m+y-m;
}
void init(){
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
fa[convert(i,j)]=convert(i,j);
}
}
}
int get(int x){
if(fa[x]==x){
return x;
}
fa[x]=get(fa[x]);
return fa[x];
}
void merge(int x,int y){
fa[get(x)]=get(y);
}
int main(){
cin>>m>>n;
init();
long long ans=0;
while(cin>>a>>b>>c>>d){
merge(convert(a,b),convert(c,d));
}
for(int j=1;j<=n;j++){
for(int i=1;i+1<=m;i++){
if(get(convert(i,j))!=get(convert(i+1,j))){
merge(get(convert(i,j)),get(convert(i+1,j)));
ans++;
}
}
}
for(int i=1;i<=m;i++){
for(int j=1;j+1<=n;j++){
if(get(convert(i,j))!=get(convert(i,j+1))){
merge(get(convert(i,j)),get(convert(i,j+1)));
ans+=2;
}
}
}
cout<<ans;
return 0;
}
连接格点(转载)
最新推荐文章于 2024-05-18 10:39:52 发布