求助
#include<bits/stdc++.h>
#define m (2*n-2)
using namespace std;
int w;
int n;
int x[12000],y[12000];
int mx[4]={0,1,0,-1},my[4]={1,0,-1,0};
int vis[2000][2000];
int mp[2000][2000];
bool flag;
int t;
int sum;
int main(){
cin>>w;
for(int o=1;o<=w;o++){
cin>>n;
flag=false;
memset(vis,0,sizeof(vis));
memset(vis,0,sizeof(mp));
for(int j=1;j<=m;j++){
cin>>x[j]>>y[j];
}
queue<int>q;
queue<int>p;
queue<int>tt;
q.push(1);
p.push(1);
tt.push(0);
vis[1][1]=1;
while(!q.empty()){
int a=q.front();
int b=p.front();
int uu=tt.front();
q.pop();
p.pop();
tt.pop();
if(a==n&&b==n){
flag=true;
break;
}
mp[x[tt.front()-1]][y[tt.front()-1]]=1;
for(int i=0;i<4;i++){
int dx=a+mx[i];
int dy=b+my[i];
if(dx>=1 && dx<=n && dy>=1 && dy<=n && mp[dx][dy]==0 && vis[dx][dy]==0) {//在矩阵中,无障碍,无访问
vis[dx][dy]=1;
q.push(dx);
p.push(dy);
tt.push(uu+1);
}
}
}
if(flag)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
while(!q.empty()) q.pop();
while(!p.empty()) p.pop();
}
return 0;
}
//3
//
//1
//
//2
//1 1
//1 2
//
//3
//3 3
//1 1
//2 2
//2 3
//Yes
//Yes
//No
为什么不可以这样子写 这样子的队列是不可以的吗