记录编号 |
129365 |
评测结果 |
AAAAAAAAAA |
题目名称 |
冲出亚马逊之圣战前夜 |
最终得分 |
100 |
用户昵称 |
奶猹 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.004 s |
提交时间 |
2014-10-19 20:17:45 |
内存使用 |
0.36 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int n;
int a[110][110];
bool b[110][110]={0};
int ans=1;
bool flag=false;
void init();
void work();
void outit();
int main()
{
freopen("ymxpre.in","r",stdin);
freopen("ymxpre.out","w",stdout);
init();
work();
outit();
return 0;
}
void init()
{
scanf("%d",&n);
memset(a,-1,sizeof(a));
scanf("\n");
char ch;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%c",&ch);
a[i][j]=ch-'0';
}
scanf("\n");
}
}
void work()
{
if(a[1][1]!=0&&a[1][1]!=2&&a[1][1]!=5)
{
ans=0;
return ;
}
queue <int> qx,qy;
qx.push(1);
qy.push(1);
b[1][1]=1;
while(!qx.empty())
{
int x=qx.front();
int y=qy.front();
if(x==n&&y==n)
{
flag=true;
return ;
}
if((a[x][y+1]==0||a[x][y+1]==2||a[x][y+1]==5)&&!b[x][y+1])
{
b[x][y+1]=1;
qx.push(x);
qy.push(y+1);
ans++;
}
if((a[x][y-1]==0||a[x][y-1]==2||a[x][y-1]==5)&&!b[x][y-1])
{
b[x][y-1]=1;
qx.push(x);
qy.push(y-1);
ans++;
}
if((a[x+1][y]==0||a[x+1][y]==2||a[x+1][y]==5)&&!b[x+1][y])
{
b[x+1][y]=1;
qx.push(x+1);
qy.push(y);
ans++;
}
if((a[x-1][y]==0||a[x-1][y]==2||a[x-1][y]==5)&&!b[x-1][y])
{
b[x-1][y]=1;
qx.push(x-1);
qy.push(y);
ans++;
}
qx.pop();
qy.pop();
}
}
void outit()
{
if(flag)printf("yes\n");
else printf("no\n");
printf("%d\n",ans);
}