题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1242
碎念:
我他妈的又错哪了,我改还不行么。。。
汗,错误代码,先存着。
错误代码:
#include<iostream>
#include<queue>
using namespace std;
char map[201][201];
int n,m;
struct P
{
int x,y;
int sum;
bool operator<(const P &a)const
{
return sum>a.sum;
}
};
int dir[4][2]={1,0,0,-1,-1,0,0,1};
int BFS(int sx,int sy)
{
P start;
start.x=sx;
start.y=sy;
start.sum=0;
priority_queue<P>que;
que.push(start);
while(!que.empty())
{
P out;
out=que.top();
que.pop();
if(map[out.x][out.y]=='r') return out.sum;
map[out.x][out.y]='#';
int i;
for(i=0;i<4;i++)
{
int nx,ny;
nx=out.x+dir[i][0];
ny=out.y+dir[i][1];
if(nx>0&&nx<=n&&ny>0&&ny<=n&&map[nx][ny]!='#')
{
P find;
find.x=nx;
find.y=ny;
if(map[nx][ny]=='r')
find.sum=out.sum+2;
else find.sum=out.sum+1;
que.push(find);
}
}
}
return -1;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
int i,j;
int sx,sy;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>map[i][j];
if(map[i][j]=='a')
{
sx=i;
sy=j;
}
}
}
int ans=BFS(sx,sy);
if(ans!=-1)
printf("%d\n",ans);
else printf("Poor ANGEL has to stay in the prison all his life.\n");
}
return 0;
}
汗,我个傻X。
怪物是x啊,你用a干嘛。
列是m啊,你用n干嘛。
代码:
#include<iostream>
#include<queue>
using namespace std;
char map[201][201];
int n,m;
struct P
{
int x,y;
int sum;
bool operator<(const P &a)const
{
return sum>a.sum;
}
};
int dir[4][2]={1,0,0,-1,-1,0,0,1};
int BFS(int sx,int sy)
{
P start;
start.x=sx;
start.y=sy;
start.sum=0;
priority_queue<P>que;
que.push(start);
while(!que.empty())
{
P out;
out=que.top();
que.pop();
if(map[out.x][out.y]=='r') return out.sum;
map[out.x][out.y]='#';
int i;
for(i=0;i<4;i++)
{
int nx,ny;
nx=out.x+dir[i][0];
ny=out.y+dir[i][1];
if(nx>0&&nx<=n&&ny>0&&ny<=m&&map[nx][ny]!='#')
{
P find;
find.x=nx;
find.y=ny;
if(map[nx][ny]=='x')
find.sum=out.sum+2;
else find.sum=out.sum+1;
que.push(find);
}
}
}
return -1;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
int i,j;
int sx,sy;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>map[i][j];
if(map[i][j]=='a')
{
sx=i;
sy=j;
}
}
}
int ans=BFS(sx,sy);
if(ans!=-1)
printf("%d\n",ans);
else printf("Poor ANGEL has to stay in the prison all his life.\n");
}
return 0;
}