Submission #725484

#TimeUsernameProblemLanguageResultExecution timeMemory
725484TheSahibZoo (COCI19_zoo)C++17
45 / 110
2076 ms15240 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3") #define ll long long #define pii pair<int, int> using namespace std; const int MAX = 1005; pii dirs[4] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; int n, m; int grid[MAX][MAX]; bool visited[MAX][MAX]; int dfs(pii cord){ visited[cord.first][cord.second] = 1; int ans = 1; for(pii d:dirs){ pii cord1 = {cord.first + d.first, cord.second + d.second}; if(cord1.first >= 0 && cord1.first < n && cord1.second >= 0 && cord1.second < m && !visited[cord1.first][cord1.second] && grid[cord1.first][cord1.second] == grid[cord.first][cord.second]){ ans += dfs(cord1); } } grid[cord.first][cord.second] = 3 - grid[cord.first][cord.second]; return ans; } int main(){ cin >> n >> m; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { char c; cin >> c; if(c == 'B'){ grid[i][j] = 1; } else if(c == 'T'){ grid[i][j] = 2; } } } int ans = 0; int last = 0; while(true){ int a = dfs({0, 0}); if(last == a){ break; } else{ ++ans; } last = a; memset(visited, 0, sizeof(visited)); } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...