제출 #1291546

#제출 시각아이디문제언어결과실행 시간메모리
1291546hynmjTracks in the Snow (BOI13_tracks)C++20
2.19 / 100
523 ms144096 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const long long N = 4e3 + 5;
int a[N][N];
bool seen[N][N];
int n, m;
bool valid(int i, int j)
{
    if (i < 0 or i >= n or j < 0 or j >= m or seen[i][j])
        return 0;
    return 1;
}

void solve()
{
    cin >> n >> m;
    char c;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> c;
            if (c == 'F')
                a[i][j] = 0;
            else if (c == '.')
                seen[i][j] = 1;
            else
                a[i][j] = 1;
        }
    }
    queue<pair<int, int>> east, west;
    int my, them;
    my = a[0][0];
    int dx[] = {1, -1, 0, 0};
    int dy[] = {0, 0, -1, 1};
    them = 1 ^ my;
    east.push({1, 1});
    int ans = 0;
    do
    {
        while (east.size())
        {
            auto t = east.back();
            east.pop();
            for (int i = 0; i < 4; i++)
            {
                int fx, fy;
                fx = t.first + dx[i], fy = t.second + dy[i];
                if (valid(fx, fy))
                {
                    if (my == a[fx][fy])
                    {
                        east.push({fx, fy});
                        seen[fx][fy] = 1;
                    }
                    else
                    {
                        west.push({fx, fy});
                        seen[fx][fy] = 1;
                    }
                }
            }
        }
        swap(east, west);
        ans++;
    } while (east.size());
    cout << ans << endl;
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    int t = 1;
    // cin >> t;
    for (int i = 1; i <= t; i++)
    {
        // cout << "Case #" << i << ':' << ' ';
        solve();
        cout << endl;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...