Submission

Status:

[PP-SSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: kimza

Problemset: fireball

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-06 00:52:47

#include <bits/stdc++.h>
using namespace std;
int main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    int n,m,q;
    cin >> n >> m >> q;
    int cc = 0;
    vector<vector<int>> mp(n+1,vector<int>(m+1));
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin >> mp[i][j];
            if(mp[i][j]==1) cc++;
        }
    }
    for(int k=0;k<q;k++){
        int a,b;
        cin >> a >> b;
        if (mp[a][b] == 0) {
            cout << cc << "\n";
            continue;
        }

        queue<pair<int,int>> qu;
        vector<vector<bool>> visited(n+1,vector<bool>(m+1,false));
        
        qu.push({a,b});
        visited[a][b] = true;
        cc--;
        while(!qu.empty()){
            int i = qu.front().first;
            int j = qu.front().second;
            qu.pop();
            if(j+1<=m && mp[i][j+1] == 1 &&!visited[i][j+1]){
                qu.push({i,j+1});
                cc--;
                visited[i][j+1] = true;
            }
            if(i+1<=n && mp[i+1][j] == 1 &&!visited[i+1][j]){
                qu.push({i+1,j});
                cc--;
                visited[i+1][j] = true;
            }
            if(j-1>0 && mp[i][j-1] == 1 &&!visited[i][j-1]){
                qu.push({i,j-1});
                cc--;
                visited[i][j-1] = true;
            }
            if(i-1>0 && mp[i-1][j] == 1 &&!visited[i-1][j]){
                qu.push({i-1,j});
                cc--;
                visited[i-1][j] = true;
            }
        }
        cout << cc << "\n";

    }
    return 0;
}