记录编号 |
69885 |
评测结果 |
AAAAAAAAAA |
题目名称 |
冲出亚马逊之圣战前夜 |
最终得分 |
100 |
用户昵称 |
老师好~~~ |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2013-09-22 14:05:01 |
内存使用 |
0.36 MiB |
显示代码纯文本
#include<fstream>
#include<deque>
#include<cstring>
#include<string>
using namespace std;
ifstream fin("ymxpre.in");
ofstream fout("ymxpre.out");
class woca
{
public:
int x;
int y;
};
deque<woca>q;
int a[102][102],n,ans=0;
bool b[102][102]={0};
bool K=0;
void BFS()
{
woca temp,p;
while(!q.empty())
{
temp=q.at(0);
if(temp.x==n&&temp.y==n)
{
K=1;
break;
}
q.pop_front();
if(temp.x+1<=n&&b[temp.x+1][temp.y]==0&&(a[temp.x+1][temp.y]==0||a[temp.x+1][temp.y]==2||a[temp.x+1][temp.y]==5))
{
p.x=temp.x+1;
p.y=temp.y;
ans++;
q.push_back(p);
b[p.x][p.y]=1;
}
if(temp.x-1>=1&&b[temp.x-1][temp.y]==0&&(a[temp.x-1][temp.y]==0||a[temp.x-1][temp.y]==2||a[temp.x-1][temp.y]==5))
{
p.x=temp.x-1;
p.y=temp.y;
ans++;
q.push_back(p);
b[p.x][p.y]=1;
}
if(temp.y+1<=n&&b[temp.x][temp.y+1]==0&&(a[temp.x][temp.y+1]==0||a[temp.x][temp.y+1]==2||a[temp.x][temp.y+1]==5))
{
p.x=temp.x;
p.y=temp.y+1;
ans++;
q.push_back(p);
b[p.x][p.y]=1;
}
if(temp.y-1>=1&&b[temp.x][temp.y-1]==0&&(a[temp.x][temp.y-1]==0||a[temp.x][temp.y-1]==2||a[temp.x][temp.y-1]==5))
{
p.x=temp.x;
p.y=temp.y-1;
ans++;
q.push_back(p);
b[p.x][p.y]=1;
}
}
}
int main()
{
fin>>n;
int i,j;
int P;
string A;
woca flag;
for(i=1;i<=n;i++)
{
fin>>A;
for(j=0;j<=n-1;j++)
a[i][j+1]=int(A[j]-48);
}
if(a[1][1]!=0&&a[1][1]!=2&&a[1][1]!=5)
{
fout<<"no"<<endl;
fout<<0<<endl;
return 0;
}
flag.x=1;
flag.y=1;
q.push_back(flag);
b[1][1]=1;
BFS();
memset(b,0,sizeof(b));
q.clear();
if(a[1][1]==0||a[1][1]==2||a[1][1]==5)
ans++;
if(K==1)
{
fout<<"yes"<<endl;
fout<<ans<<endl;
}
else
{
fout<<"no"<<endl;
fout<<ans<<endl;
}
return 0;
}