Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: VggT
Problemset: fireball
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-12 19:51:49
#include <bits/stdc++.h>
using namespace std;
void dfs(vector<vector<int>> &grid,int &count, int i, int j)
{
if(i < 0 || j < 0 || i >= grid.size() || j >= grid[0].size() || grid[i][j] == 0) return;
grid[i][j] = 0;
count+=1;
dfs(grid,count,i-1,j);
dfs(grid,count,i+1,j);
dfs(grid,count,i,j-1);
dfs(grid,count,i,j+1);
}
void dfs2(vector<vector<int>> &grid,int &count, int i, int j)
{
if(i < 0 || j < 0 || i >= grid.size() || j >= grid[0].size() || grid[i][j] == 0) return;
grid[i][j] = 0;
count-=1;
dfs2(grid,count,i-1,j);
dfs2(grid,count,i+1,j);
dfs2(grid,count,i,j-1);
dfs2(grid,count,i,j+1);
}
int main()
{
int n, m, q; cin >> n >> m >> q;
vector<vector<int>> grid(n,vector<int>(m));
for(auto &a : grid) for(auto &b : a) cin >> b;
vector<vector<int>> copygrid = grid;
int count = 0;
for(int i = 0; i < grid.size(); i+=1)
{
for(int j = 0; j < grid[0].size(); j+=1)
{
dfs(grid,count,i,j);
}
}
grid = copygrid;
for(int i = 0; i < q; i+=1)
{
int x, y;
cin >> x >> y;
dfs2(grid,count,x-1,y-1);
cout << count << '\n';
}
return 0;
}