ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 보물섬
    백준알고리즘 2019. 7. 17. 21:54
    #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;
    
    }

    입력어떻게하지? 라고 생각들었던문제, 내용자체는 매우쉬움

    '백준알고리즘' 카테고리의 다른 글

    인구 이동  (0) 2019.07.17
    영역 구하기  (0) 2019.07.17
    시험 감독  (0) 2019.07.17
    유기농 배추  (0) 2019.07.17
    연구소  (0) 2019.07.17

    댓글

Designed by Tistory.