请问为什么爆空间?
查看原帖
请问为什么爆空间?
475219
_meant_to_be_楼主2021/7/22 14:47
#include<bits/stdc++.h>
using namespace std;
int t,n,x[2000],y[2000],f[1001][1001],ans;
int dx[4]={0,0,-1,1},dy[4]={-1,1,0,0};
void bfs(int sx,int sy){
	queue <int>qx;
	queue <int>qy;
	qx.push(sx);
	qy.push(sy);
	while(!qx.empty()&&!qy.empty()){
		int xx=qx.front();
		qx.pop();
		int yy=qy.front();
		qy.pop();
		for(int i=0;i<4;i++){
			int nx=xx+dx[i];
			int ny=yy+dy[i];
			if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&f[nx][ny]==0){
				qx.push(nx);
				qy.push(ny);
				if(nx==n&&ny==n){
					ans++;
					cout<<"Yes";
					return;
				}
			}
		}
	}
}
int main(){
	cin>>t;
	while(t--){
		cin>>n;
		for(int i=1;i<=2*n-2;i++){
			cin>>x[i]>>y[i];
			f[x[i]][y[i]]=2;
		}
		bfs(1,1);
		if(ans==0){
			cout<<"No";
		}
		memset(f,0,sizeof(f));
		ans=0;
	}
	return 0;
}

用bfs+STL做的

2021/7/22 14:47
加载中...