记录编号 435717 评测结果 AAAAAAAAAAAAA
题目名称 [USACO Feb07] 青铜莲花池 最终得分 100
用户昵称 GravatarHzoi_Mafia 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2017-08-10 07:37:30 内存使用 0.00 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int m,n,m1,m2;
int x[8],y[8];
int init[31][31];
int startx,starty,endx,endy;
bool vis[31][31];
int qx[1001],qy[1001];
int hx=0,hy=0,tx=0,ty=0;
int ans[31][31];
inline int read(){
    int sum=0;
    char ch=getchar();
    while(ch<'0'||ch>'9')
      ch=getchar();
    while(ch>='0'&&ch<='9'){
      sum=sum*10+ch-'0';
      ch=getchar();
    }
    return sum;
}
inline int gg(){
	freopen("bronlily.in","r",stdin);
	freopen("bronlily.out","w",stdout);
    m=read();
    n=read();
    m1=read();
    m2=read();
    for(int i=1;i<=m;i++)
      for(int j=1;j<=n;j++){
        init[i][j]=read();
        if(init[i][j]==3){
          startx=i;
          starty=j;
        }
        if(init[i][j]==4){
          endx=i;
          endy=j;
        }
      }
    x[0]=m1;y[0]=-m2;
    x[1]=m1;y[1]=m2;
    x[2]=-m1;y[2]=m2;
    x[3]=-m1;y[3]=-m2;
    x[4]=m2;y[4]=m1;
    x[5]=m2;y[5]=-m1;
    x[6]=-m2;y[6]=m1;
    x[7]=-m2;y[7]=-m1;
    qx[tx++]=startx;
    qy[ty++]=starty;
    vis[startx][starty]=true;
    ans[startx][starty]=0;
    while(hx<tx){
      int tmpx=qx[hx++],tmpy=qy[hy++];
      for(int i=0;i<=7;i++){
        if(tmpx+x[i]<=0||tmpx+x[i]>m||tmpy+y[i]<=0||tmpy+y[i]>n||vis[tmpx+x[i]][tmpy+y[i]]||init[tmpx+x[i]][tmpy+y[i]]==0||init[tmpx+x[i]][tmpy+y[i]]==2)
          continue;
        else{
          qx[tx++]=tmpx+x[i];
          qy[ty++]=tmpy+y[i];
          vis[tmpx+x[i]][tmpy+y[i]]=true;
          ans[tmpx+x[i]][tmpy+y[i]]=ans[tmpx][tmpy]+1;
        }
      }
    }
    cout<<ans[endx][endy];
}
int K(gg());
int main(){;}