<自我感觉良好> 求助!

P1746 离开中山路

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 感谢指教


|