记录编号 |
384427 |
评测结果 |
AAAAAAAAAAAAA |
题目名称 |
[USACO Feb07] 青铜莲花池 |
最终得分 |
100 |
用户昵称 |
蒙牛盐酸乳 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.017 s |
提交时间 |
2017-03-18 11:06:22 |
内存使用 |
11.76 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int m,n,head,tail,stx,sty,edx,edy,m1,m2;
int map[31][31];
int Qx[1000000],Qy[1000000],Qstep[1000000];
bool jilu[30][30];
int main()
{
freopen("bronlily.in","r",stdin);
freopen("bronlily.out","w",stdout);
cin>>m>>n>>m1>>m2;
int dx[8]={m1,m1,-m1,-m1,m2,m2,-m2,-m2},dy[8]={m2,-m2,m2,-m2,m1,-m1,m1,-m1};
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>map[i][j];
if(map[i][j]==3)
{
stx=i;
sty=j;
}
if(map[i][j]==4)
{
edx=i;
edy=j;
}
}
}
Qx[0]=stx;
Qy[0]=sty;
jilu[stx][sty]=1;
while(head<=tail)
{
if(Qx[head]==edx && Qy[head]==edy)
{
cout<<Qstep[head];
break;
}
for(int i=0;i<=7;i++)
{
int nx=Qx[head]+dx[i];
int ny=Qy[head]+dy[i];
if(nx<0 || nx>=m || ny<0 || ny>=n) continue;
if(map[nx][ny]==0 || map[nx][ny]==2) continue;
if(jilu[nx][ny]==1) continue;
jilu[nx][ny]=1;
tail++;
Qx[tail]=nx;
Qy[tail]=ny;
Qstep[tail]=Qstep[head]+1;
}
head++;
}
fclose(stdin);
fclose(stdout);
return 0;
}