Submission #1084158

#TimeUsernameProblemLanguageResultExecution timeMemory
1084158hemaprakashTracks in the Snow (BOI13_tracks)C++17
100 / 100
947 ms122752 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;
    vector<vector<char>> grid(n, vector<char> (m));
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            cin >> grid[i][j];
        }
    }
    vector<vector<int>> distances(n, vector<int> (m));
    vector<int> dir_x = {1, -1, 0, 0}, dir_y = {0, 0, 1, -1};
    deque<pair<int, int>> q;
    q.push_front({0, 0});
    distances[0][0] = 1;
    int ans = 0;
    while(q.size())
    {
        auto src = q.front();
        q.pop_front();
        for(int i = 0; i < 4; i++)
        {
            int x = src.first + dir_x[i], y = src.second + dir_y[i];
            if(x >= 0 && x < n && y >= 0 && y < m && grid[x][y] != '.' && distances[x][y] == 0)
            {
                if(grid[x][y] == grid[src.first][src.second])
                {
                    distances[x][y] = distances[src.first][src.second];
                    q.push_front({x, y});
                }
                else
                {
                    distances[x][y] = distances[src.first][src.second] + 1;
                    q.push_back({x, y});
                }
                ans = max(ans, distances[x][y]);
            }
        }
    }
    cout << ans << endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...