Submission

Status:

[PP-SSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: Test

Problemset: fireball

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-25 15:24:43

#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;
        cout << one - find(x-1,y-1) << "\n";
    }
}

/*
3 3 1
0 0 0  
1 0 1
0 1 1
3 3
1
*/