//https://www.acmicpc.net/problem/2589 #include <iostream> |
#include <queue> |
#include <utility> |
using namespace std; |
char map[50][50]; |
int visited[50][50]; |
int N,M, mx; |
int dy[4]={0,0,1,-1}; |
int dx[4]={1,-1,0,0}; |
void init(){ |
for(int i=0; i<N; i++) |
for(int j=0; j<M; j++) |
visited[i][j]=0; |
} |
void bfs(int y, int x){ |
queue< pair<int, int> > q; |
q.push(make_pair(y,x)); |
visited[y][x]=1; |
while(!q.empty()){ |
y=q.front().first; |
x=q.front().second; |
q.pop(); |
for(int i=0; i<4; i++){ |
int ny=y+dy[i]; |
int nx=x+dx[i]; |
if(ny>=0 && ny<N && nx>=0 && nx<M){ |
if(map[ny][nx]=='L' && !visited[ny][nx]){ |
q.push(make_pair(ny,nx)); |
visited[ny][nx]=visited[y][x]+1; |
if(visited[ny][nx]>mx) mx=visited[ny][nx]; |
} |
} |
} |
} |
} |
int main(){ |
cin >> N >> M; |
for(int i=0; i<N; i++) |
cin >> map[i]; |
for(int i=0; i<N; i++) |
for(int j=0; j<M; j++){ |
if(map[i][j]=='L'){ |
init(); |
bfs(i,j); |
} |
} |
cout << mx-1; |
} |
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
180207_2606_바이러스 (0) | 2018.02.07 |
---|---|
180206_5014_스타트링크 (0) | 2018.02.06 |
180203_1010_다리 놓기 (0) | 2018.02.03 |
180202_2146_다리 만들기 (0) | 2018.02.02 |
180201_1037_약수 (0) | 2018.02.01 |