全WA,求看
查看原帖
全WA,求看
1046923
in_shadow楼主2024/7/30 22:57
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1005][1005],bx,by,ex,ey;
int b[1005][1005],dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
struct ni
{
	int x,y,t,yn;
}q[1000005]; 
void bfs(int x,int y)
{
	int nx=x,ny=y,nt=0,head=0,tail=1,nyn=0;
	b[nx][ny]=1;
	q[0]={nx,ny,0,0};
	while(head!=tail)
	{
		for(int i=0;i<4;i++)	
		{
			nx=q[head].x+dx[i];
			ny=q[head].y+dy[i];
			nt=q[head].t++;
			if(a[nx][ny]==4) nyn=1;
			else			nyn=0; 
			if(nx<1||nx>n||ny<1||ny>m||b[nx][ny]==1) continue;
			if(q[head].yn+nyn>1) continue;
			q[head].yn+=nyn;
			b[nx][ny]=1;
			if(nx==ex&&ny==ey&&q[head].yn==1)
			{
				cout<<q[head].t;
				exit(0);	
			} 
			tail++;
		}
		head++;
	}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	{
		cin>>a[i][j];	
		if(a[i][j]==2) bx=i,by=j;
		if(a[i][j]==3) ex=i,ex=j;
	}
bfs(bx,by);
    return 0;
}

help,为啥没输出?

2024/7/30 22:57
加载中...