Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: mantaggez
Problemset: fireball
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-11 21:14:03
#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
const int nx = 1e2+5;
int n, m, Q, res, grid[nx][nx], vs[nx][nx];
int di[] = {-1, 0, 0, 1};
int dj[] = {0, -1, 1, 0};
queue<pii> q;
void bfs(int x, int y)
{
q.push({x, y});
while(!q.empty())
{
auto [i, j] = q.front();
q.pop();
if(vs[i][j]) continue;
vs[i][j] = 1;
res--;
for(int d=0;d<4;d++)
{
int ni = i + di[d], nj = j + dj[d];
if(1 <= ni && ni <= n && 1 <= nj && nj <= m && grid[ni][nj] == 1)
q.push({ni, nj});
}
}
cout << res << '\n';
}
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin >> n >> m >> Q;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
cin >> grid[i][j];
if(grid[i][j] == 1) res++;
}
}
for(int i=1;i<=Q;i++)
{
int x, y;
cin >> x >> y;
if(vs[x][y] || grid[x][y] == 0)
cout << res << '\n';
else
bfs(x, y);
}
return 0;
}