https://www.acmicpc.net/problem/1058
코드
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
#define MAX 51
#define FASTIO ios::sync_with_stdio(false); cin.tie(NULL);
typedef pair<int, int> pi;
int n, ans;
char arr[MAX][MAX];
bool visit[MAX];
void bfs(int s) {
queue<pi> q;
q.push({ s, 0 });
visit[s] = 1;
int cnt = 0;
while (!q.empty()) {
int now = q.front().first;
int d = q.front().second;
q.pop();
if (d > 1) continue;
for (int i = 0; i < n; i++) {
if (arr[now][i] == 'Y' && visit[i] == 0) {
visit[i] = 1;
cnt++;
q.push({ i, d + 1 });
}
}
}
ans = max(ans, cnt);
}
int main() {
FASTIO;
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> arr[i][j];
for (int i = 0; i < n; i++) {
memset(visit, false, sizeof(visit));
bfs(i);
}
cout << ans << "\n";
return 0;
}
설명
모든 사람에 대해 bfs로 숫자 세서 최댓값을 갱신해주면 됩니다.
느낀 점
bfs 기본 문제.
'PS (C, C++)' 카테고리의 다른 글
[백준/C++] 15723 n단 논법 (0) | 2024.11.11 |
---|---|
[백준/C++] 13565 침투 (0) | 2024.11.10 |
[백준/C++] 6118 숨바꼭질 (0) | 2024.11.08 |
[백준/C++] 25516 거리가 k이하인 트리 노드에서 사과 수확하기 (0) | 2024.11.05 |
[백준/C++] 1245 농장 관리 (0) | 2024.11.05 |