Submission
Status:
[PP-SSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: tnka4_
Problemset: fireball
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-10 10:52:51
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int y, x, n;
vector<pair<int, int>> dir = {{0, 1}, {0, -1}, {-1, 0}, {1, 0}};
bool isInside(pair<int, int> p) {
if (p.first >= 0 && p.first < y && p.second >= 0 && p.second < x) return true;
return false;
}
int main() {
cin >> y >> x >> n;
vector<vector<int>> grid(y, vector<int>(x, 0));
int rem = 0;
for (int i=0; i<y; i++) {
for (int j=0; j<x; j++) {
cin >> grid[i][j];
if (grid[i][j] == 1) rem++;
}
}
pair<int, int> start;
vector<int> remVec;
for (int k=0; k<n; k++) {
cin >> start.first >> start.second;
start.first--; start.second--;
if (grid[start.first][start.second] != 1) {
remVec.push_back(rem);
continue;
}
queue<pair<int,int>> q;
q.push(start);
while (!q.empty()) {
pair<int,int> c = q.front();
q.pop();
grid[c.first][c.second] = 2;
rem--;
for (auto d : dir) {
pair<int, int> n;
n.first = c.first + d.first;
n.second = c.second + d.second;
if (isInside(n) && grid[n.first][n.second] == 1) {
q.push(n);
}
}
}
remVec.push_back(rem);
}
for (int r : remVec) {
cout << r << endl;
}
}