Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: mantaggez

Problemset: fireball

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-11 21:14:03

#include <bits/stdc++.h>

using namespace std;
using pii = pair<int, int>;

const int nx = 1e2+5;

int n, m, Q, res, grid[nx][nx], vs[nx][nx];
int di[] = {-1, 0, 0, 1};
int dj[] = {0, -1, 1, 0};
queue<pii> q;

void bfs(int x, int y)
{
    q.push({x, y});
    while(!q.empty())
    {
        auto [i, j] = q.front();
        q.pop();
        if(vs[i][j]) continue;
        vs[i][j] = 1;
        res--;
        for(int d=0;d<4;d++)
        {
            int ni = i + di[d], nj = j + dj[d];
            if(1 <= ni && ni <= n && 1 <= nj && nj <= m && grid[ni][nj] == 1)
                q.push({ni, nj});
        }
    }
    cout << res << '\n';
}

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin >> n >> m >> Q;
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=m;j++) {
            cin >> grid[i][j];
            if(grid[i][j] == 1) res++;
        }
    }

    for(int i=1;i<=Q;i++)
    {
        int x, y;
        cin >> x >> y;
        if(vs[x][y] || grid[x][y] == 0)
            cout << res << '\n';
        else
            bfs(x, y);
    }
    

    return 0;
}