记录编号 48072 评测结果 AAAAAAAAAA
题目名称 神奇的风 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.030 s
提交时间 2012-11-04 15:51:26 内存使用 0.57 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <queue>
using namespace std;

const int RUL[4][2]={{0,1},{0,-1},{1,0},{-1,0}};

struct quetype
{
	int x,y;
};

char map[210][210];
int power[210][210];
bool dir[210][210];
queue<quetype> que;

int main(void)
{
	freopen("wind.in","r",stdin);
	freopen("wind.out","w",stdout);
	int i,j,n,m;
	quetype s,e,to;
	cin>>n>>m;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
		{
			cin>>map[i][j];
			if (map[i][j]=='S')
			{
				power[i][j]=16384;
				s.x=i;
				s.y=j;
				map[i][j]='.';
			}
			else if (map[i][j]=='E')
			{
				e.x=i;
				e.y=j;
				map[i][j]='.';
			}
		}
	cin>>dir[s.x][s.y];
	que.push(s);
	while (!que.empty())
	{
		s=que.front();
		for (i=0;i<4;i++)
		{
			to.x=s.x+RUL[i][0];
			to.y=s.y+RUL[i][1];
			if (map[to.x][to.y]=='.')
			{
				if (power[to.x][to.y]<power[s.x][s.y])
				{
					power[to.x][to.y]=power[s.x][s.y];
					dir[to.x][to.y]=!dir[s.x][s.y];
					que.push(to);
				}
			}
			else if (map[to.x][to.y]=='*')
			{
				if (power[to.x][to.y]<(power[s.x][s.y]>>1))
				{
					power[to.x][to.y]=(power[s.x][s.y]>>1);
					dir[to.x][to.y]=!dir[s.x][s.y];
					que.push(to);
				}
			}
		}
		que.pop();
	}
	if (power[e.x][e.y])
	{
		cout<<power[e.x][e.y]<<endl<<int(dir[e.x][e.y])<<endl;
	}
	else
	{
		cout<<"There's no wind!\n";
	}
	return(0);
}