为什么RE??????????

P1746 离开中山路

Kio_ @ 2018-12-26 12:49:09

只过了一个点

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n;
int a[1050][1050];
int m[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int x1,y1,x2,y2;
int h=0,t=1;
struct s
{
    int x;
    int y;
    int num=0;
}d[10000000];
int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        string c;
        cin>>c;
        for(int j=0;j<c.size();j++)
        {
            a[i][j]=c[j]-'0';
        }
    }
    scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
    x1--;y1--;x2--;y2--;
    d[0].x=x1;d[0].y=y1;
    while(h<=t)
    {
        a[d[h].x][d[h].y]=1;
        if(d[h].x==x2&&d[h].y==y2)return !printf("%d",d[h].num);
        for(int i=0;i<4;i++)
        {
            int dx=d[h].x+m[i][0],dy=d[h].y+m[i][1];
            if(dx>=0&&dx<n&&dy>=0&&dy<n&&a[dx][dy]==0)
            {
                d[t].x=dx;
                d[t].y=dy;
                d[t].num=d[h].num+1;
                t++;
            }
        }
        h++;
//      if(d[h].x+1<n&&a[d[h].x+1][d[h].y]==0)
//      {
//          d[t].x=d[h].x+1;
//          d[t].y=d[h].y;
//          d[t].num=d[h].num+1;
//          t++;
//      }
//      if(d[h].x-1>=0&&a[d[h].x-1][d[h].y]==0)
//      {
//          d[t].x=d[h].x-1;
//          d[t].y=d[h].y;
//          d[t].num=d[h].num+1;
//          t++;
//      }
//      if(d[h].y+1<n&&a[d[h].x][d[h].y+1]==0)
//      {
//          d[t].x=d[h].x;
//          d[t].y=d[h].y+1;
//          d[t].num=d[h].num+1;
//          t++;
//      }
//      if(d[h].y-1>=0&&a[d[h].x][d[h].y-1]==0)
//      {
//          d[t].x=d[h].x;
//          d[t].y=d[h].y-1;
//          d[t].num=d[h].num+1;
//          t++;
//      }
//      h++;da
    }
}

by ywy_c_asm @ 2018-12-26 13:27:31

@kill_ 您算一下数组占的内存就会发现爆空间了……


|