AT5220 [ABC151D] Maze Master
题目传送门:AT5220
这个题目用 BFS
解决即可,对于每一个点 (i, j)
,判断是否是空格,是的话就 BFS
搜索即可,总的复杂度是
代码:
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
const int N = 25;
char ch[N][N];
int dx[4] = { 0, 0, 1, -1 };
int dy[4] = { 1, -1, 0, 0 };
int H, W;
int ans;
bool visit[N][N];
struct Node
{
int x, y, times;
};
void bfs(int x, int y)
{
queue<Node> q;
Node t;
t.x = x; t.y = y; t.times = 0;
q.push(t);
visit[x][y] = true;
while (!q.empty())
{
Node l = q.front();
ans = max(ans, l.times);
q.pop();
for (int i = 0; i < 4; i++)
{
int new_x = l.x + dx[i];
int new_y = l.y + dy[i];
if (new_x < 1 || new_x > H || new_y < 1 || new_y > W || visit[new_x][new_y] || ch[new_x][new_y] == '#')
{
continue;
}
Node tmp;
tmp.x = new_x;
tmp.y = new_y;
tmp.times = l.times + 1;
q.push(tmp);
visit[new_x][new_y] = true;
}
}
}
int main()
{
cin >> H >> W;
for (int i = 1; i <= H; i++)
{
for (int j = 1; j <= W; j++) cin >> ch[i][j];
}
for (int i = 1; i <= H; i++)
{
for (int j = 1; j <= W; j++)
{
if (ch[i][j] == '.')
{
memset(visit, false, sizeof(visit));
bfs(i, j);
}
}
}
cout << ans << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现