Submission

Status:

[PP-SSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: ztmy_

Problemset: fireball

Language: cpp

Time: 0.003 second

Submitted On: 2025-12-02 00:57:08

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

vector<vector<int>> adj_mat;
vector<vector<int>> fireball;

int countries(const vector<vector<int>>& fb, int Q, int remaining){
    vector<vector<bool>> visited(adj_mat.size(), vector<bool>(adj_mat[0].size(), false));
    queue<pair<int, int>> q;

    int sx = fb[Q][0];
    int sy = fb[Q][1];

    if (adj_mat[sx][sy] != 1) return remaining;

    visited[sx][sy] = true;
    q.push({sx, sy});

    int dx[] = {-1, 1, 0, 0};
    int dy[] = {0, 0, -1, 1};

    int xbound = adj_mat.size() - 1;
    int ybound = adj_mat[0].size() - 1;
    int remove = 0;

    while (!q.empty()){
        int x = q.front().first;
        int y = q.front().second;
        q.pop();
        remove++;

        for (int i = 0; i < 4; i++){
            int cx = x + dx[i];
            int cy = y + dy[i];
            if (cx >= 1 && cx <= xbound && cy >= 1 && cy <= ybound && !visited[cx][cy] && adj_mat[cx][cy] == 1){
                visited[cx][cy] = true;
                q.push({cx, cy});
            }
        }
    }
    return remaining - remove;
}

int main(){
    int n,m,q,r = 0;
    cin>>n>>m>>q;
    adj_mat.resize(n+1, vector<int>(m+1));
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>adj_mat[i][j];
            if (adj_mat[i][j] == 1) r++;
        }
    }
    fireball.resize(q, vector<int>(2));
    for (int i = 0; i < q; i++){
        for (int j = 0; j < 2; j++){
            cin >> fireball[i][j];
        }
    }
    for (int i = 0; i < q; i++){
        cout << countries(fireball, i, r) << endl;
    }
}