<自我感觉良好> 求助!
查看原帖
<自我感觉良好> 求助!
803133
CYF123469楼主2023/2/26 12:08
#include <iostream>
#include <queue>
#include <cstring>
#include <cstdio>
using namespace std ;
int n ;
int x1,y1,x2,y2 ;
const int N=1030 ;
int xx[]={0,1,0,-1} ;
int yy[]={1,0,-1,0} ;
int mp[N][N] ;
int visit[N][N] ;
struct node 
{
	int x,y,step ;
};
int bfs(int x1,int y1)
{
	queue<node> q; 
	q.push({x1,y1,0}) ;
	while(q.size())
	{
		node t=q.front() ;
		q.pop() ;
		if(t.x==x2&&t.y==y2) return t.step ;
		else 
		{
			for(int i=0;i<4;i++)
			{
				int idx=t.x+xx[i]; 
				int idy=t.y+yy[i] ;
				if(idx>=1&&idx<=n&&idy>=1&&idy<=n&&!visit[idx][idy]&&mp[idx][idy]==0)
				{
					if(idx==x2&&idy==y2) return t.step+1 ;
					else 
					{
						visit[idx][idy]=1 ;
						q.push({idx,idy,t.step+1}) ;
					}
				}
			}	
		}	
	}
}
int main()
{
	cin>>n ;
	memset(mp,0,sizeof(mp)) ;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>mp[i][j] ;
		}
	}
	memset(visit,0,sizeof(visit)) ;
	scanf("%d %d %d %d",&x1,&y1,&x2,&y2) ;
	cout<<bfs(x1,y1)<<endl ;
	return 0;
}

真的想不明白为什么我的输入都不对啊…… 但是思路应该没啥问题……

2023/2/26 12:08
加载中...