Submission
Status:
[PPPPPPPPPPPPPPP]
Score: 100
User: Dormon
Problemset: fireball
Language: cpp
Time: 0.003 second
Submitted On: 2025-05-21 11:45:32
#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int>> dir = {{1, 0}, {0, -1}, {-1, 0}, {0, 1}};
int main()
{
int n, m, q;
cin >> n >> m >> q;
vector<vector<int>> grid(n + 2, vector<int>(m + 2));
int cnt = 0;
for (int i = 1;i <= n;i++){
for (int j = 1;j <= m;j++){
cin >> grid[i][j];
cnt += grid[i][j];
}
}
auto invalid = [&](int i, int j) -> bool {
return i < 1 || i > n || j < 1 || j > m || grid[i][j] == 0;
};
auto bfs = [&](int a, int b) -> int {
int res = 0;
queue<pair<int, int>> q;
q.push({a, b});
while (!q.empty()){
auto [i, j] = q.front(); q.pop();
if (grid[i][j] == 0) continue;
grid[i][j] = 0;
res++;
for (auto [di, dj]:dir){
if (invalid(i + di, j + dj)) continue;
q.push({i + di, j + dj});
}
}
return res;
};
while (q--){
int a, b;
cin >> a >> b;
cnt -= bfs(a, b);
cout << cnt << '\n';
}
return 0;
}