Submission
Status:
[-SSSSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: Ninstroyer
Problemset: fireball
Language: cpp
Time: 0.003 second
Submitted On: 2025-12-24 23:16:43
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m, q;
cin >> n >> m >> q;
vector<vector<int>> a(n + 1, vector<int>(m + 1));
int land = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
cin >> a[i][j];
if (a[i][j] == 0) land++;
}
vector<pair<int,int>> dir = {{1,0},{-1,0},{0,1},{0,-1}};
while (q--)
{
int r, c;
cin >> r >> c;
if (a[r][c] != 0)
{
cout << land << '\n';
continue;
}
queue<pair<int,int>> qu;
qu.push({r, c});
a[r][c] = 2;
int burned = 1;
while (!qu.empty())
{
auto [x, y] = qu.front();
qu.pop();
for (auto [dx, dy] : dir)
{
int nx = x + dx, ny = y + dy;
if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && a[nx][ny] == 0)
{
a[nx][ny] = 2;
burned++;
qu.push({nx, ny});
}
}
}
land -= burned;
cout << land << '\n';
}
}