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