#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int n;
int dd;
int dis[1005][1005];
int sta[1005][1005]={0};
int flag[1005][1005];
int x[4]={0,0,-1,1};
int y[4]={1,-1,0,0};
typedef pair<int,int> ii;
queue<ii> q;
int bfs()
{
memset(dis,-1,sizeof(dis));
memset(sta,0,sizeof(sta));
dis[1][1]=0;
sta[1][1]=1;
q.push({1,1});
while(!q.empty())
{
ii t=q.front();
q.pop();
for(int i=0;i<4;i++)
{
int a,b;
a=t.first+x[i];
b=t.second+y[i];
if(a<1||b<1||a>dd||b>dd)
continue;
if(sta[a][b]==1)
continue;
dis[a][b]=dis[t.first][t.second]+1;
if(dis[a][b]>flag[a][b])
{
dis[a][b]=-1;
continue;
}
q.push({a,b});
sta[a][b]=1;
if(a==n&&b==n)
return dis[a][b];
}
}
return dis[n][n];
}
int main()
{
scanf("%d",&n);
while(n--)
{
scanf("%d",&dd);
int z=2*dd-2;
int p,q,c=1;
memset(flag,0x3f,sizeof(flag));
while(z--)
{
scanf("%d %d",&p,&q);
flag[p][q]=c++;
}
int res=bfs();
if(sta[dd][dd]==0)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}
为什么我样例二,十组数据分开输入答案都是对的,但是连着输入答案就错了,我明明也初始化了