문제
유기농 배추
코드
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <utility>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <cmath>
#include <string>
using namespace std;
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int t, m, n, k;
int x, y;
int bug;
stack<pair<int, int>> q;
pair<int, int> insert;
cin >> t;
for(int i = 0; i < t; i++)
{
cin >> m >> n >> k;
int board[n][m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
board[i][j] = 0;
for (int i = 0; i < k; i++)
{
cin >> x >> y;
board[y][x] = 1;
insert.first = y;
insert.second = x;
q.push(insert);
}
while (!q.empty())
{
insert = q.top();
q.pop();
if (board[insert.first][insert.second] == 1)
{
board[insert.first][insert.second] = 2;
bug++;
}
for (int i = 0; i < 4; i++)
{
int new_x = insert.second + dx[i];
int new_y = insert.first + dy[i];
if (new_x < 0 || new_x >= m || new_y < 0 || new_y >= n)
continue;
if (board[new_y][new_x] == 0 || board[new_y][new_x] == 2)
continue;
if (board[new_y][new_x] == 1)
board[new_y][new_x] = 2;
q.push({new_y, new_x});
}
}
cout << bug << '\n';
bug = 0;
}
}