Submission #757753

#TimeUsernameProblemLanguageResultExecution timeMemory
757753drdilyorTracks in the Snow (BOI13_tracks)C++17
0 / 100
917 ms975012 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    int n, m;
    cin >> n >> m;
    vector<string> mat(n);
    for (string& s : mat) {
        cin >> s;
        s.resize(n);
    }

    int di[]{0, 0, -1, 1};
    int dj[]{-1, 1, 0, 0};

    vector vis(n, vector<bool>(m));
    int cnt = 0, res = 0;
    auto dfs = [&](auto& dfs, int i, int j, int d)->void {
        res = max(res, d);
        cnt++;
        //if (!(cnt & (1<<20)-1)) cout << cnt << endl;
        vis[i][j] = 1;
        for (int d = 0; d < 4; d++) {
            int ei = i + di[d];
            int ej = j + dj[d];
            if (0 <= ei && ei < n && 0 <= ej && ej < m && !vis[ei][ej] && mat[ei][ej] == mat[i][j]) {
                dfs(dfs, ei, ej, d);
            }
        }
        for (int d = 0; d < 4; d++) {
            int ei = i + di[d];
            int ej = j + dj[d];
            if (0 <= ei && ei < n && 0 <= ej && ej < m && !vis[ei][ej] && mat[ei][ej] == mat[i][j]) {
                dfs(dfs, ei, ej, d+1);
            }
        }
    };
    dfs(dfs, 0, 0, 1);
    cout << res << '\n';

    return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...