记录编号 | 435717 | 评测结果 | AAAAAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [USACO Feb07] 青铜莲花池 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | 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(){;}