제출 #1347540

#제출 시각아이디문제언어결과실행 시간메모리
1347540gkishor03Tracks in the Snow (BOI13_tracks)C++20
0 / 100
759 ms1114112 KiB
#include<iostream>
#include<vector>
using namespace std;

#define int long long

void solve(){
    
    int n, m; 
    cin >> n >> m;

    vector<string> grid(n);

    for(auto &i: grid){
        cin >> i;
    }

    vector<vector<int>> vis(n, vector<int>(m, 0));
    
    int f = 0, r = 0;
    auto dfs = [&](int x, int y, auto && self) -> void {

        int dx[] = {0, 0, -1, 1};
        int dy[] = {1, -1, 0, 0};

        for(int d = 0; d < 4; d++){
            int nx = dx[d] + x;
            int ny = dy[d] + y;

            if(nx < 0 || nx >= n || ny < 0 || ny >= m) continue;

            if(vis[nx][ny] || grid[nx][ny] == '.') continue;

            vis[nx][ny] = 1;
            f |= (grid[nx][ny] == 'F');
            r |= (grid[nx][ny] == 'R');

            self(nx, ny, self);
        }
    };

    int ans = 0;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            if(vis[i][j]) continue;

            vis[i][j] = 1;
            f = 0, r = 0;

            dfs(i, j, dfs);

            ans += (f + r);
        }
    }
    cout << ans << endl;
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    // init();

    int tc = 1;
    // cin >> tc;

    while(tc--){
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...