二十分求助!!!
查看原帖
二十分求助!!!
725397
zhangchengyi356535楼主2023/3/26 21:21
#include <bits/stdc++.h>
using namespace std;
int T,n,mapp[10100][10100],flag;
struct nod{
	int x,y,t;
};
queue<nod>q;
struct qwe{
	int x,y;
}a[10100];
int dx[5]={1,0,0,-1,0};
int dy[5]={0,1,-1,0,0};
int main(){
	cin>>T;
	while(T--){
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>a[i].x>>a[i].y;
		}
		nod begin;
		begin.x=1;
        begin.y=1;
        begin.t=0;
        q.push(begin);
        int s=begin.t;
        while(q.empty()==0){
        	nod now=q.front();
        	q.pop();
        	if(s!=now.t){
        		mapp[a[now.t-1].x][a[now.t-1].y]=1;
			}
        	s=now.t;
        	for(int i=0;i<5;i++){
        		nod nxt;
        		nxt.x=now.x+dx[i];
        		nxt.y=now.y+dy[i];
        		nxt.t=now.t+1;
        		if(nxt.x>=1&&nxt.x<=n&&nxt.y>=1&&nxt.y<=n&&mapp[nxt.x][nxt.y]==0){
        			if(nxt.x==n&&nxt.y==n){
        				cout<<"Yes"<<endl;
        				flag=1;
        				break;
					}
        			mapp[nxt.x][nxt.y]=1;
        			q.push(nxt);
				}
			}
			if(flag==1){
				break;
			}
		}
		if(flag==0){
			cout<<"No"<<endl;
		}
		flag=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				mapp[i][j]=0;
			}
		}
		while(q.empty()==0){
			q.pop();
		}
	}
	return 0;
}
                             
2023/3/26 21:21
加载中...