调了2小时,最后发现是
for(int i=1;i<=3;i++){
if(x.dis==1){
xx.x+=i;
if(xx.x>=N) break;
if(a[xx.x][xx.y]==1) break;
if(xx.step>=d[xx.x][xx.y][xx.dis]) continue;
else d[xx.x][xx.y][xx.dis]=xx.step;
q.push(xx);
xx.x-=i;
}
中的continue前面没有把xx.x变为初始值,样例还过了拿了80分,咦,做题目还是要细致啊