浮梦若生 @ 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 谢谢!