Submission #1315286

#TimeUsernameProblemLanguageResultExecution timeMemory
1315286lananhTracks in the Snow (BOI13_tracks)C++20
100 / 100
389 ms112176 KiB
#include <iostream>
#include <vector>
#include <deque>
#include <string>
#include <algorithm>

using namespace std;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int h, w;
    if (!(cin >> h >> w)) return 0;
    vector<string> a(h);
    for (int i = 0; i < h; i++) cin >> a[i];
    vector<vector<int>> d(h, vector<int>(w, 0));
    deque<pair<int, int>> q;
    q.push_back({0, 0});
    d[0][0] = 1;
    int m = 1;
    int x[] = {1, -1, 0, 0};
    int y[] = {0, 0, 1, -1};
    while (!q.empty()) {
        pair<int, int> p = q.front();
        q.pop_front();
        int r = p.first;
        int c = p.second;
        if (d[r][c] > m) m = d[r][c];
        for (int i = 0; i < 4; i++) {
            int u = r + x[i];
            int v = c + y[i];
            if (u >= 0 && u < h && v >= 0 && v < w && a[u][v] != '.' && d[u][v] == 0) {
                if (a[u][v] == a[r][c]) {
                    d[u][v] = d[r][c];
                    q.push_front({u, v});
                } else {
                    d[u][v] = d[r][c] + 1;
                    q.push_back({u, v});
                }
            }
        }
    }
    cout << m << endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...