-
#include<vector> #include<cstdio> #include<iostream> #include<queue> #include<algorithm> #include<string> using namespace std; int n,m; int a[51][51]; bool d[51][51]; int c[51][51]; int dx[] = {0,0,1,-1}; int dy[] = {1,-1,0,0}; void initial(){ for(int i = 0; i <= 50; i++){ for(int j = 0; j <= 50; j++){ d[i][j] = false; c[i][j] = 0; } } } void bfs(int x, int y, vector<int>& v){ queue<pair<int, int>> q; q.push(make_pair(x,y)); d[x][y] = true; c[x][y] = 0; int result = 0; while(!q.empty()){ x = q.front().first; y = q.front().second; q.pop(); for(int i = 0; i < 4; i++){ int nx = x+ dx[i]; int ny = y+dy[i]; if(nx >= 0 && nx < n && ny >= 0 && ny <m){ if(a[nx][ny] == 1){ if(d[nx][ny] == false){ c[nx][ny] = c[x][y]+1; if(result < c[nx][ny]) result = c[nx][ny]; d[nx][ny]= true; q.push(make_pair(nx,ny)); } } } } } v.push_back(result); } int main(){ scanf("%d %d", &n, &m); char s; vector<pair<int, int>> land; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cin>>s; if(s == 'L'){ a[i][j] = 1; land.push_back(make_pair(i,j)); } } } vector<int> v; for(int i = 0; i < land.size(); i++){ int x = land[i].first; int y = land[i].second; bfs(x,y,v); initial(); } sort(v.begin(), v.end(),greater<int>()); cout<<v[0]<<endl; return 0; }
입력어떻게하지? 라고 생각들었던문제, 내용자체는 매우쉬움