为什么不对?
  • 板块P3395 路障
  • 楼主qiaoyushu
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/5 21:10
  • 上次更新2023/11/2 15:24:00
查看原帖
为什么不对?
1039112
qiaoyushu楼主2023/10/5 21:10
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000+10;
int n,T,dis[maxn][maxn];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
struct node
{
	int x,y;
	int t;
} point[maxn];
bool bfs(int x,int y,int t)
{
	if(x==n && y==n) return true;
	for(int i=0; i<4; i++)
	{
		int ddx=x+dx[i],ddy=y+dy[i];
		if(ddx<0 || ddy<0 || ddx>n || ddy>n) continue;
		if(dis[ddx][ddy]==0)
		{
			bfs(ddx,ddy,t+1);
			dis[point[t].x][point[t].y]=1e9;
		}
	}
	return false;
}
int main()
{
	cin>>T;
	for(int i=1; i<=T; i++)
	{
		cin>>n;
		for(int j=1; j<=n; j++) for(int k=1; k<=n; k++) dis[j][k]=0;
		for(int j=1; j<=2*n-2; j++) 
		{
			cin>>point[j].x>>point[j].y;
			point[j].t=j;
		}
		bool k=bfs(1,1,1);
		cout<<k<<endl;
	}
	return 0;
}
2023/10/5 21:10
加载中...