Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: yypp

Problemset: fireball

Language: cpp

Time: 0.003 second

Submitted On: 2026-03-25 16:27:37

#include <bits/stdc++.h>
using namespace std;

int mp[105][105];
queue<pair<int,int> > qe;
int wx[] = {1,-1,0,0};
int wy[] = {0,0,1,-1};

int main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    int n,m,q,con=0,x,y,nx,ny,ix,iy;
    cin >> n >> m >> q;
    for (int i=1;i<=n;i++) {
        for (int j=1;j<=m;j++) {
            cin >> mp[i][j];
            if (mp[i][j]==1) {
                con++;
            }
        }
    }
    for (int i=0;i<q;i++) {
        cin >> x >> y;
        if (mp[x][y]==0) {
            cout << con << "\n"; continue;
        }
        qe.push({x,y});
        while(!qe.empty()) {
            nx = qe.front().first; ny = qe.front().second;
            qe.pop();
            //printf("%d %d\n",nx,ny);
            if (mp[nx][ny]==2) continue;
            if (mp[nx][ny]==1) {
                con--; mp[nx][ny] = 2;
            }

            for (int i=0;i<4;i++) {
                ix = nx+wx[i]; iy = ny+wy[i];
                //printf("c %d %d\n",ix,iy);
                if (ix>=1&&ix<=n&&iy>=1&&iy<=m&&mp[ix][iy]==1) {
                    //printf("-> %d %d\n",ix,iy);
                    qe.push({ix,iy});
                }
            }
            /*
            for (int i=1;i<=n;i++) {
                for (int j=1;j<=m;j++) {
                    cout << mp[i][j];
                }
                cout << "\n";
            }
            cout << "\n";
            */
        }
        cout << con << "\n";
    }
}