求助在C++17为什么会CE
  • 板块学术版
  • 楼主luqyou
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/2/19 21:50
  • 上次更新2023/10/24 00:17:16
查看原帖
求助在C++17为什么会CE
464732
luqyou楼主2023/2/19 21:50
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+10;
int n,m,cant[maxn][maxn][4],vis[maxn][maxn],cowcnt[maxn][maxn],xmax,ymax,ans;
map<int,int> m1,m2;
int dx[]={0,0,1,0,-1};
int dy[]={0,1,0,-1,0};
int dfs(int x,int y) {
    vis[x][y]=1;
    int sum=0;
    for(int i=1;i<=4;i++){
        int nx=x+dx[i],ny=y+dy[i];
        if(!cant[x][y][i]&&!nx&&!ny&&nx<=xmax+1&&ny<=ymax+1&&!vis[nx][ny]){
        	sum+=dfs(nx,ny);
		}
    }
    sum+=cowcnt[x][y];
    return sum;
}
int main(){
    ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>m>>n;
	vector<vector<int> > zl(m,vector<int>(4)),cow(n,vector<int>(2));
    for(auto& i:zl){
        for(int j=0;j<4;j++){
        	cin>>i[j];
		}
        m1[i[0]],m1[i[2]],m2[i[1]],m2[i[3]];
    }
    for(auto& i:cow){
        cin>>i[0]>>i[1];
        m1[i[0]],m2[i[1]];
    }
    for(auto& [a,b]:m1){
    	b=++xmax;
	}
    for(auto& [a,b]:m2){
    	b=++ymax;
	}
    for(auto i:zl){
        int x1=m1[i[0]],x2=m1[i[2]],y1=m2[i[1]],y2=m2[i[3]];
        if(x1==x2){
            if(y1>y2){
            	swap(y1,y2);
			}
            for(int j=y1;j<=y2;j++){
            	cant[x1-1][j][1]=1;
				cant[x1][j][3]=1;
			}
        }
		else{
            if(x1>x2){
				swap(x1,x2);
			}
            for(int j=x1;j<=x2;j++){
            	cant[j][y1-1][0]=1;
				cant[j][y1][2]=1;
			}
        }
    }
    for(auto& i:cow){
        i[0]=m1[i[0]],i[1]=m2[i[1]];
        cowcnt[i[0]][i[1]]=1;
    }
    for(auto i:cow){
    	if(!vis[i[0]][i[1]]){
    		ans=max(ans,dfs(i[0],i[1]));
		}
	}
    cout<<ans;
    return 0;
}
2023/2/19 21:50
加载中...