제출 #807468

#제출 시각아이디문제언어결과실행 시간메모리
807468gtm7Tracks in the Snow (BOI13_tracks)C++17
82.50 / 100
2084 ms178312 KiB
#include <bits/stdc++.h>
using namespace std;

int a[4000][4000];
bool visited[4000][4000]{false};
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};

int main()
{
    int h, w;
    cin >> h >> w;
    char ch;
    for (int i = 0; i < h; i++)
    {
        for (int j = 0; j < w; j++)
        {
            cin >> ch;
            if (ch == 'F')
                a[i][j] = 1;
            else if (ch == 'R')
                a[i][j] = 2;
            else
                a[i][j] = 3;
        }
    }
    int ans = 1;
    set<vector<int>> q;
    vector<int> s;
    int ii, jj;
    q.insert({1, 0, 0});
    visited[0][0] = true;
    while (!q.empty())
    {
        s = *q.begin();
        q.erase(q.begin());
        for (int i = 0; i < 4; i++)
        {
            ii = s[1] + dx[i];
            jj = s[2] + dy[i];
            if (ii >= 0 && ii < h && jj >= 0 && jj < w && !visited[ii][jj] && a[ii][jj] != 3)
            {
                visited[ii][jj] = true;
                if (a[ii][jj] == a[s[1]][s[2]])
                {
                    q.insert({s[0], ii, jj});
                }
                else
                {
                    ans = max(ans, s[0] + 1);
                    q.insert({s[0] + 1, ii, jj});
                }
            }
        }
    }
    cout << ans << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...