矩阵交WA30求条!

image
image
image
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 分求条

有人吗qwq

有15min

为什么没有人啊啊啊啊啊啊啊啊!