제출 #757472

#제출 시각아이디문제언어결과실행 시간메모리
757472The_SamuraiTracks in the Snow (BOI13_tracks)C++17
100 / 100
1630 ms245684 KiB
#include "bits/stdc++.h"

using namespace std;

int INF = 1e9;
vector<int> dx = {1, -1, 0, 0};
vector<int> dy = {0, 0, 1, -1};

int main() {
    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
    clock_t startTime = clock();

    int n, m;
    cin >> n >> m;
    vector<vector<char>> a(n, vector<char>(m, '.'));
    int cnt_not = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> a[i][j];
            if (a[i][j] != '.') {
                cnt_not++;
            }
        }
    }
    if (max(n, m) == 1) {
        cout << 1;
        return 0;
    }
    vector<pair<int, int>> can = {{0, 0}};
    vector<vector<bool>> vis(n, vector<bool>(m));
    char x = a[0][0];
    vis[0][0] = true;
    cnt_not--;
    int ans = 0;
    while (cnt_not > 0) {
        ans++;
        vector<pair<int, int>> nw_can = {{0, 0}};
        for (int p = 0; p < can.size(); p++) {
            auto [i, j] = can[p];
            for (int k = 0; k < 4; k++) {
                int ii = i + dx[k];
                int jj = j + dy[k];
                if (min(ii, jj) < 0 or ii == n or jj == m) continue;
                if (vis[ii][jj]) continue;
                if (a[ii][jj] == x) {
                    nw_can.emplace_back(ii, jj);
                    can.emplace_back(ii, jj);
                    vis[ii][jj] = true;
                    cnt_not--;
                }
            }
        }
        x = (x == 'R' ? 'F' : 'R');
        can = nw_can;
    }
    cout << ans;



#ifdef sunnitov
    cerr << "\nTime: " << (int)((double)(clock() - startTime) / CLOCKS_PER_SEC * 1000);
#endif
}

/*
 5 6
 FFFFFF
 RRRRRF
 F...RF
 F...RF
 F..RRF
 FFFRRF
*/

컴파일 시 표준 에러 (stderr) 메시지

tracks.cpp: In function 'int main()':
tracks.cpp:38:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |         for (int p = 0; p < can.size(); p++) {
      |                         ~~^~~~~~~~~~~~
tracks.cpp:11:13: warning: unused variable 'startTime' [-Wunused-variable]
   11 |     clock_t startTime = clock();
      |             ^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...