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;
}
}