CYF123469 @ 2023-02-26 12:08:22
#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;
}
真的想不明白为什么我的输入都不对啊…… 但是思路应该没啥问题……
by Hellsing_Alucard @ 2023-02-26 12:31:38
这题的输入中间没有空格,要想字符串一样读入,或scanf("%1d",)
by Hellsing_Alucard @ 2023-02-26 12:33:58
你读入的是
1 101,100
by CYF123469 @ 2023-02-26 16:19:13
@rubish 已改正了 已经AC 感谢指教