记录编号 69885 评测结果 AAAAAAAAAA
题目名称 冲出亚马逊之圣战前夜 最终得分 100
用户昵称 Gravatar老师好~~~ 是否通过 通过
代码语言 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;
}