Submission #1219462

#TimeUsernameProblemLanguageResultExecution timeMemory
1219462khzhZoo (COCI19_zoo)C++20
110 / 110
41 ms5444 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 1005; const int MOD = 1e9 + 7; const ll oo = 1e18; #define fi first #define se second #define pb push_back char a[N][N]; int vs[N][N]; int n, m; int dx[] = {1, 0, 0, -1}; int dy[] = {0, 1, -1, 0}; int c[256]; int cur, ans; void inp(void) { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) cin >> a[i][j]; } void process(void) { c['T'] = 0; c['B'] = 1; cur = c[a[1][1]]; queue<pair<int,int>> q, nq; vs[1][1] = 1; q.push({1,1}); ans = 0; while (!q.empty()) { ans++; while (!q.empty()) { auto [x,y] = q.front(); q.pop(); for (int d = 0; d < 4; d++) { int nx = x + dx[d], ny = y + dy[d]; if (nx < 1 || nx > n || ny < 1 || ny > m) continue; if (vs[nx][ny]) continue; if (a[nx][ny] != 'B' && a[nx][ny] != 'T') continue; vs[nx][ny] = 1; if (c[a[nx][ny]] == cur) q.push({nx, ny}); else nq.push({nx, ny}); } } cur = !cur; q = nq; while (!nq.empty()) nq.pop(); } cout << ans; } int main(void) { ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); inp(); process(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...