Submission

Status:

[-SSSSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: Ninstroyer

Problemset: fireball

Language: cpp

Time: 0.003 second

Submitted On: 2025-12-24 23:16:43

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

int main()
{
    int n, m, q;
    cin >> n >> m >> q;

    vector<vector<int>> a(n + 1, vector<int>(m + 1));
    int land = 0;

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
        {
            cin >> a[i][j];
            if (a[i][j] == 0) land++;
        }

    vector<pair<int,int>> dir = {{1,0},{-1,0},{0,1},{0,-1}};

    while (q--)
    {
        int r, c;
        cin >> r >> c;

        if (a[r][c] != 0)
        {
            cout << land << '\n';
            continue;
        }

        queue<pair<int,int>> qu;
        qu.push({r, c});
        a[r][c] = 2;
        int burned = 1;

        while (!qu.empty())
        {
            auto [x, y] = qu.front();
            qu.pop();
            for (auto [dx, dy] : dir)
            {
                int nx = x + dx, ny = y + dy;
                if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && a[nx][ny] == 0)
                {
                    a[nx][ny] = 2;
                    burned++;
                    qu.push({nx, ny});
                }
            }
        }

        land -= burned;
        cout << land << '\n';
    }
}