728x90
반응형
https://www.acmicpc.net/problem/21736
#include <iostream>
#include <queue>
using namespace std;
int n, m;
char map[601][601];
bool visit[601][601];
int cnt = 0;
int dx[4] = { 1, 0, -1, 0 };
int dy[4] = { 0, 1, 0, -1 };
void bfs(int i, int j) {
visit[i][j] = true;
queue<pair<int, int>> q;
q.push(pair<int, int>(i, j));
while (!q.empty()) {
int nx = q.front().first;
int ny = q.front().second;
q.pop();
for (int i = 0; i < 4; i++) {
int x = nx + dx[i];
int y = ny + dy[i];
if (x >= 0 && y >= 0 && x < n && y < m && visit[x][y] == false) {
if (map[x][y] == 'X') continue;
if (map[x][y] == 'P') cnt++;
visit[x][y] = true;
q.push(pair<int, int>(x, y));
}
}
}
}
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> map[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (map[i][j] == 'I') {
bfs(i, j);
}
}
}
if (cnt == 0) cout << "TT" << endl;
else cout << cnt << endl;
return 0;
}
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 11279번 최대 힙 (C++) (0) | 2021.11.07 |
---|---|
[BOJ] 1991번 트리 순회 (C++) (0) | 2021.11.06 |
[BOJ] 12865번 평범한 배낭 (C++) (0) | 2021.11.05 |
[BOJ] 1966번 프린터 큐 (C++) (0) | 2021.11.03 |
[BOJ] 4963번 섬의 개수 (C++) (0) | 2021.11.03 |