记录编号 186254 评测结果 AAAAAAAAAAA
题目名称 [USACO Oct09] 乳草的入侵 最终得分 100
用户昵称 Gravataraaaaa 是否通过 通过
代码语言 C++ 运行时间 0.006 s
提交时间 2015-09-12 11:31:51 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
int xx[9]={0,1,1,0,-1,-1,-1,0,1},yy[9]={0,0,1,1,1,0,-1,-1,-1};
int main()
{
	freopen("milkweed.in","r",stdin);
	freopen("milkweed.out","w",stdout);
	int x,y,sum=0,flag,ans=0;
	int dui[10001][3]={0},tou=1,wei=1;
	char map[101][101],ch;
	scanf("%d%d%d%d",&x,&y,&dui[1][2],&dui[1][1]);
	getchar();
	dui[1][1]=y-dui[1][1]+1;
	for (int i=1;i<=y;i++)
	{
		for (int j=1;j<=x;j++)
		{
			scanf("%c",&map[i][j]);
			if (map[i][j]=='.') sum++;
		}
		getchar();
	}
	map[dui[1][1]][dui[1][2]]='M';
	sum--;
	while(wei>=tou&&sum>0)
	{
		flag=wei;
		for (int i=tou;i<=flag;i++)
		{
			for (int j=1;j<=8;j++)
				if ((dui[i][1]+xx[j])<=y&&(dui[i][1]+xx[j])>0&&(dui[i][2]+yy[j])<=x&&(dui[i][2]+yy[j])>0)
					if (map[dui[i][1]+xx[j]][dui[i][2]+yy[j]]=='.')
					{
						map[dui[i][1]+xx[j]][dui[i][2]+yy[j]]='M';
						sum--;
						wei++;
						dui[wei][1]=dui[i][1]+xx[j];
						dui[wei][2]=dui[i][2]+yy[j];
					}
		}
		tou=flag+1;
		ans++;

	}
	if (sum==0)
		printf("%d",ans);
	else
		printf("-1");
	return 0;
}