样例过不了 代码AC
  • 板块学术版
  • 楼主_WAlkingDead
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/11/9 09:52
  • 上次更新2023/11/4 01:03:17
查看原帖
样例过不了 代码AC
86789
_WAlkingDead楼主2021/11/9 09:52

P1746 离开中山路

???求纰漏

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int N=1e3+5;
int n;
int a[N][N];
int x1,y1,x2,y2;
bool flag[N][N];
struct Node{
	int x,y,cnt;
};
queue<Node> q;
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
bool check(int x,int y){
	return (x>0&&y>0&&x<=n&&y<=n&&!flag[x][y]&&!a[x][y])?true:false;
}
int bfs(int x,int y){
	q.push((Node){x,y,1});
	while(!q.empty()){
		Node u=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			Node e;
			e.x=u.x+dx[i],e.y=u.y+dy[i];
			if(check(e.x,e.y)){
				if(e.x==x2&&e.y==y2) return e.cnt-1;
				flag[e.x][e.y]=true;
				e.cnt=u.cnt+1;
				q.push(e);
			}
		}
	}
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			scanf("%1d",&a[i][j]);
		}
	}
	scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
	printf("%d\n",bfs(x1,y1));
	return 0;
}
2021/11/9 09:52
加载中...