求助……

P1746 离开中山路

Xxzxx @ 2018-04-30 20:53:43

现在不输出

求dalao/神犇

帮助呀

#include<bits/stdc++.h>
using namespace std;
int xx,yy,xy,yx,n,f=-1,r;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
string mp[1005];
struct no
{
    int x,y,dep;
}q[1000009];
void bfs()
{
    q[r].x=xx;
    q[r].y=yy;
    q[r].dep=0;
    while(f<r)
    {
        no temp=q[++f];
        if(temp.x==xy&&temp.y==yx)
        {cout<<temp.dep;return;}
        for(int i=0;i<4;i++)
        {
            int nx=temp.x+dir[i][0];
            int ny=temp.y+dir[i][1];
            if(mp[nx][ny]=="0"&&nx>0&&ny>0&&nx<=n&&ny<=n)
            {
                q[++r].x=nx;
                q[r].y=ny;
                q[r].dep=temp.dep+1;
            }
        }
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
            cin>>mp[i];
    cin>>xx>>yy>>xy>>yx;
    bfs();
}

by Xxzxx @ 2018-05-01 10:47:35

现在情况严重了

还是不输出

#include<bits/stdc++.h>
using namespace std;
int xx,yy,xy,yx,n,f=-1,r;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}},mp[10000][10000];
string s;
struct node
{
    int x;
    int y;
    int dep;
}q[1000009];
void bfs()
{
    q[r].x=xx;
    q[r].y=yy;
    q[r].dep=0;
    while(f<r)
    {
        node temp=q[++f];
        if(temp.x==xy&&temp.y==yx)
        {cout<<temp.dep;return;}
        for(int i=0;i<4;i++)
        {
            int nx=temp.x+dir[i][0];
            int ny=temp.y+dir[i][1];
            if(mp[nx][ny]==0&&nx>0&&ny>0&&nx<=n&&ny<=n)
            {
                mp[nx][ny]==1;
                r++;
                q[r].x=nx;
                q[r].y=ny;
                q[r].dep=temp.dep+1;
            }
        }
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>s;
        for(int j=1;j<=n;j++)
            mp[i][j]=s[j-1];
    }
    for(int i=1;i<=n;i++)
    q[i].dep=2147483647;
    cin>>xx>>yy>>xy>>yx;
    bfs();
}

|