Submission

Status:

[PP-SSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: Phat12

Problemset: fireball

Language: cpp

Time: 0.002 second

Submitted On: 2025-11-04 19:56:29

/*
TASK: c2_knb64_fireball.cpp
LANG: C++
AUTHOR: Phat
*/
#include <bits/stdc++.h>
#define FO(i,L,R) for (int i = L; i < R; i++)
using namespace std;
int diri[] = {0,0,-1,1};
int dirj[] = {1,-1,0,0};
bitset<200> arr[200];
int vis[200][200];
int ver=1;
int n,m,q;
int dfs(int x,int y){
    if (arr[x][y]==0) return 0;
    vis[x][y]=ver;
    int cnt=1;
    for (int i=0;i<4;i++){
        int ii = diri[i]+x , jj = dirj[i]+y;
        if (ii <= 0 || ii > n || jj <= 0 || jj > m || arr[ii][jj] == 0 || vis[ii][jj] == ver) continue;
        cnt += dfs(ii,jj);
    }
    
    return cnt;
}
int32_t main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    cin >> n >> m >> q;
    int cnt=0;
    for (int i=1;i<=n;i++){
        for (int j=1;j<=n;j++){
            bool a;
            cin >> a;
            arr[i][j] = a;
            if (a) cnt++;
        }
    }
    while(q--){
        int x,y;
        cin >> x >> y;
        int cnt2 = dfs(x,y);
        cout << cnt-cnt2 << '\n';
        ver++;
    }


    return 0;
}