只有#1AC
查看原帖
只有#1AC
1329138
luogu_hezhenmin1楼主2024/9/22 09:49

rt

#include<bits/stdc++.h>
using namespace std;
int t,n,x,y,cnt=1,f[1002][1002];
bool vis[1002][1002];
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
queue<pair<int,int> >q;
int main(){
	cin>>t;
	while(t--){
		cin>>n;
		for(int i=1;i<=n;i++)
		   for(int j=1;j<=n;j++){
		       vis[i][j]=0;
		       f[i][j]=-1;
			}
		f[1][1]=0;
		q.push({1,1});
		while(!q.empty()){
			pair<int,int> k=q.front();q.pop();
			int bx=k.first,by=k.second;
			if(f[bx][by]==cnt and cnt<=2*n-2){
				cin>>x>>y;
				vis[x][y]=1;
				cnt++;
			}
			for(int i=0;i<4;i++){
				int nx=bx+dx[i],ny=by+dy[i];
				if(nx<1 or ny<1 or nx>n or ny>n or f[nx][ny]!=-1 or vis[nx][ny]) continue;
				f[nx][ny]=f[bx][by]+1;
				q.push({nx,ny});
			}
		}
		if(f[n][n]==-1) cout<<"No"<<endl;
		else cout<<"Yes"<<endl;
	}
	return 0;
}
2024/9/22 09:49
加载中...