2 条题解
-
0
#include<stdio.h>
#include<queue>
using namespace std;
char map[1005][1005];
int vis[1005][1005] = {0};
int dx[4] = {-1,0,1,0};
int dy[4] = {0,-1,0,1};
struct p
{
int x,y,ans;
}b,t;
queue
q;
int n,m;
int m1,m2;
void bfs()
{
vis[b.x][b.y] = 1;
while(!q.empty())
{
b = q.front();
q.pop();
if(b.x == m1 && b.y == m2)
{
printf("宿主可成功逃脱,最快逃脱步数为 %d 步
\n",b.ans);
return;
}
for(int i=0;i<4;i++)
{
int nex = b.x + dx[i];
int ney = b.y + dy[i];
if(nex >=1 && nex <=n && ney >=1 && ney
<=m && vis[nex][ney] == 0 && map[nex]
[ney] != '*')
{
vis[nex][ney] = 1;
t.x = nex,t.y = ney,t.ans = b.ans+1;
q.push(t);
}
}
}
printf("宿主任务失败,宣告死亡\n");
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
scanf(" %c",&map[i][j]);
if(map[i][j] == 'T')
{
m1 = i;
m2 = j;
}
if(map[i][j] == 'S')
{
b.x = i;
b.y = j;
b.ans = 0;
}
}
}
q.push(b);
bfs();
return 0;
}
信息
- ID
- 1055
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 201
- 已通过
- 26
- 上传者