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;
}