记录编号 |
48072 |
评测结果 |
AAAAAAAAAA |
题目名称 |
神奇的风 |
最终得分 |
100 |
用户昵称 |
Truth.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);
}