社区讨论

全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 条回复,欢迎继续交流。

正在加载回复...