Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: Test
Problemset: fireball
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-25 15:26:49
#include <bits/stdc++.h>
using namespace std;
//14.40-15.16
vector<vector<char>> grid;
vector<vector<bool>> visited;
int n,m;
int di[4] = {-1,1,0,0};
int dj[4] = {0,0,1,-1};
int find(int i,int j){
if(i<0 || j<0 || i>=n || j>=m) return 0;
if(grid[i][j]=='0') return 0;
if(visited[i][j]) return 0;
grid[i][j]='0';
visited[i][j] = true;
int area = 1;
for(int k=0;k<4;k++){
area += find(i+di[k],j+dj[k]);
}
return area;
}
int main(){
ios_base::sync_with_stdio(0),cin.tie(0);
int q;
cin >> n >> m >> q;
grid.resize(n,vector<char>(m));
visited.assign(n,vector<bool>(m,false));
int one = 0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin >> grid[i][j];
if(grid[i][j]=='1') one++;
}
}
//cout << one;
for(int i=0;i<q;i++){
int x,y;
cin >> x >> y;
one -= find(x-1,y-1);
cout << one << "\n";
}
}
/*
3 3 1
0 0 0
1 0 1
0 1 1
3 3
1
*/