分开输入对,连续输入错
  • 板块P3395 路障
  • 楼主olaolaola
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/9 20:19
  • 上次更新2024/4/9 22:04:33
查看原帖
分开输入对,连续输入错
470236
olaolaola楼主2024/4/9 20:19
#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;
}

为什么我样例二,十组数据分开输入答案都是对的,但是连着输入答案就错了,我明明也初始化了

2024/4/9 20:19
加载中...