社区讨论
全WA求助
P1506拯救oibh总部参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo1e4yl1
- 此快照首次捕获于
- 2023/10/22 19:33 2 年前
- 此快照最后确认于
- 2023/11/02 20:18 2 年前
CPP
#include <iostream>
#include <queue>
using namespace std;
struct Point
{
int x, y;
};
int n, m;
char c[505][505];
bool flag[505][505];
queue<Point> q;
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int ans;
void bfs()
{
q.push((Point){1, 1});
flag[1][1] = true;
while (q.size())
{
Point now = q.front();
q.pop();
for (int i = 0;i < 4;i++)
{
int nx = now.x + dx[i];
int ny = now.y + dy[i];
if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && !flag[nx][ny] && c[nx][ny] == '*')
{
q.push((Point){nx, ny
});
flag[nx][ny] = true;
}
}
}
}
int main()
{
cin >> n >> m;
for (int i = 0;i <= n + 1;i++)
{
for (int j = 0;j <= m + 1;j++)
{
flag[i][j] = false;
c[i][j] = '*';
}
}
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= m;j++)
{
cin >> c[i][j];
}
}
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= m;j++)
{
if (c[i][j] == '0' && (i == 1 || i == n || j == 1 || j == m))
{
flag[i][j] = true;
q.push((Point){i, j
});
}
}
}
bfs();
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= m;j++)
{
if (!flag[i][j])
{
ans++;
}
}
}
cout << ans;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...