救救孩子!

P1746 离开中山路

浮梦若生 @ 2018-11-06 17:41:10

RT,巨蒻NOIP前的广搜小练手;样例能过,但评测WA声一片······只有10分

向神犇们求助!

大写压行码风请见谅

#include<bits/stdc++.h>
#define GC getchar
#define OUT printf
#define DURU scanf
const int MAXS=1005;
using namespace std;
int DX[4]={1,0,-1,0};
int DY[4]={0,1,0,-1};
int A[MAXS][MAXS],X[MAXS],Y[MAXS],DIS[MAXS];
int M,SX,SY,TX,TY,HEAD,NEXT;
void READ(int &X){
    char C=GC();X=0;
    while(C<'0' || C>'9')
        C=GC();
    while(C>=48 && C<=57){
        X=X*10+C-48;
        C=GC();
    }
}
void DFS(int S1,int S2,int T1,int T2){      //请自动忽视函数名
    HEAD=1;NEXT=2;A[S1][S2]=1;X[HEAD]=S1;Y[HEAD]=S2;
    for(register int I=1;HEAD!=NEXT;I++){
        for(register int J=0;J<=3;J++){
            int U=X[HEAD]+DX[J];
            int V=Y[HEAD]+DY[J];
            if(U==T1 && V==T2){OUT("%d\n",DIS[HEAD]+1);return;}
            if(U>=1 && U<=M && V>=1 && V<=M && A[U][V]!=1){
                A[U][V]=1;X[NEXT]=U;Y[NEXT]=V;
                DIS[NEXT]=DIS[HEAD]+1;NEXT+=1;
            }   
        }
        HEAD++;
    }
}
int main( ){
    READ(M);
    for(register int I=1;I<=M;I++)
    for(register int J=1;J<=M;J++)
        DURU("%1d",&A[I][J]);
    READ(SX);READ(SY);READ(TX);READ(TY);
    DFS(SX,SY,TX,TY); return 0;
}

by zjy1412 @ 2018-11-06 17:54:43

被wa声吸引过来。。。


by hellomath @ 2018-11-06 18:03:12

被wa声吸引过来。。。


by Boeing777X @ 2018-11-06 18:11:25

被wa声吸引过来。。。


by trueldc @ 2018-11-06 18:12:37

队列开N*N


by 浮梦若生 @ 2018-11-06 18:36:31

@ldc354152051 谢谢!


|