Submission #251339

#TimeUsernameProblemLanguageResultExecution timeMemory
251339BruteforcemanZoo (COCI19_zoo)C++11
110 / 110
46 ms4732 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 1005; bool vis[maxn][maxn]; char s[maxn][maxn]; const int dx[] = {0, 0, -1, 1}; const int dy[] = {-1, 1, 0, 0}; int n, m; bool inside(int i, int j) { return (0 <= i && i < n) && (0 <= j && j < m); } vector <pair <int, int>> can; bool mark[maxn][maxn]; void dfs(int x, int y, char cur) { vis[x][y] = true; mark[x][y] = true; char inv = (cur == 'T') ? 'B' : 'T'; for(int k = 0; k < 4; k++) { int i = x + dx[k]; int j = y + dy[k]; if(inside(i, j) && s[i][j] == cur && !vis[i][j]) { dfs(i, j, cur); } if(inside(i, j) && s[i][j] == inv && !mark[i][j]) { mark[i][j] = true; can.emplace_back(i, j); } } } int main() { scanf("%d %d", &n, &m); int total = 0; for(int i = 0; i < n; i++) { scanf("%s", s[i]); for(int j = 0; j < m; j++) { total += (s[i][j] != '*'); } } int ans = 0; char cur = s[0][0]; can.emplace_back(0, 0); while(can.size() > 0) { auto tmp = can; can.clear(); for(auto i : tmp) { if(!vis[i.first][i.second]) { dfs(i.first, i.second, cur); } } cur = (cur == 'T') ? 'B' : 'T'; ++ans; } printf("%d\n", ans); return 0; }

Compilation message (stderr)

zoo.cpp: In function 'int main()':
zoo.cpp:33:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d", &n, &m);
   ~~~~~^~~~~~~~~~~~~~~~~
zoo.cpp:36:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%s", s[i]);
     ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...