2589번

seuls2·2023년 4월 4일
0

BOJ

목록 보기
24/55

2589

#include <iostream>
#include <queue>
#include <algorithm>

using namespace std;

int l, w;
char map[50][50];
int dx[4] = { -1,1,0,0 };
int dy[4] = { 0,0,-1,1 };

int bfs(int x, int y) {
	int dist = 0;
	bool visit[50][50] = { false, };

	queue<pair<pair<int, int>, int> > q;
	visit[x][y] = true;
	q.push(make_pair(make_pair(x, y), 0));
	while (!q.empty()) {
		int qx = q.front().first.first;
		int qy = q.front().first.second;
		int cnt = q.front().second;
		q.pop();
		dist = max(dist, cnt);

		for (int i = 0; i < 4; i++) {
			int tmpx = qx + dx[i];
			int tmpy = qy + dy[i];
			if (tmpx < 0 || tmpx >= l || tmpy < 0 || tmpy >= w) continue;
			if (!visit[tmpx][tmpy] && map[tmpx][tmpy]=='L') {
				visit[tmpx][tmpy] = true;
				q.push(make_pair(make_pair(tmpx, tmpy), cnt + 1));
			}
		}
	}
	return dist;
}

int main() {
	cin >> l >> w;
	for (int i = 0; i < l; i++) {
		for (int j = 0; j < w; j++) {
			cin >> map[i][j];
		}
	}

	int answer = 0;
	for (int i = 0; i < l; i++) {
		for (int j = 0; j < w; j++) {
			if (map[i][j] == 'L') {
				answer = max(bfs(i, j), answer);
			}
		}
	}
	cout << answer;
}
profile
공부 기록용 ( ᵕ·̮ᵕ )♩

0개의 댓글