


My\,\,Code:
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct jx{
int a,b,c,d;
}a[55];
int n;
vector<int>x;
vector<int>y;
map<int,int>mpx;
map<int,int>mpy;
int vis[405][405];
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
int lenx,leny;
bool check(int nowx,int nowy,int tx,int ty){
if(nowx==tx){
for(int i = 1;i<=n;i++){
if((max(nowy,ty)==a[i].b||max(nowy,ty)==a[i].d)&&a[i].a<=nowx&&nowx<a[i].c){
return 0;
}
}
}
if(nowy==ty){
for(int i = 1;i<=n;i++){
if((max(nowx,tx)==a[i].a||max(nowx,tx)==a[i].c)&&a[i].d<=nowy&&nowy<a[i].b){
return 0;
}
}
}
return 1;
}
void dfs(int xx,int yy){
for(int i = 0;i<4;i++){
int r = xx + dx[i];
int c = yy + dy[i];
if(r>=0&&r<=lenx&&c>=0&&c<=leny&&!vis[r][c]&&check(xx,yy,r,c)){
vis[r][c] = 1;
dfs(r,c);
}
}
}
signed main() {
//freopen("WoW.txt","w",stdout);
cin>>n;
for(int i = 1;i<=n;i++){
cin>>a[i].a>>a[i].b>>a[i].c>>a[i].d;
x.push_back(a[i].a);
y.push_back(a[i].b);
x.push_back(a[i].c);
y.push_back(a[i].d);
}
sort(x.begin(),x.end());
sort(y.begin(),y.end());
lenx = unique(x.begin(),x.end())-x.begin();
leny = unique(y.begin(),y.end())-y.begin();
for(int i = 1;i<=n;i++){
for(int j = 0;j<lenx;j++){
if(x[j]==a[i].a)a[i].a = j;
if(x[j]==a[i].c)a[i].c = j;
}
for(int j = 0;j<leny;j++){
if(y[j]==a[i].b)a[i].b = j;
if(y[j]==a[i].d)a[i].d = j;
}
}
int ans = 0;
for(int i = 0;i<lenx;i++){
for(int j = 0;j<leny;j++){
if(vis[i][j]==0){
vis[i][j] = 1;
dfs(i,j);
ans++;
}
}
}
cout<<ans;
return 0;
}
{\color{red}WA}\,\,30 分求条