#include "soccer.h"
#include <bits/stdc++.h>
using namespace std;
int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
int biggest_stadium(int N, std::vector<std::vector<int>> F)
{
vector<vector<bool>> vis(N, vector<bool>(N));
int cnt = 0, res = 0;
auto dfs = [&](auto& dfs, int i, int j) -> void {
vis[i][j] = 1;
for (int k = 0; k < 4; ++k) {
int ni = i + dx[k];
int nj = j + dy[k];
if (max(ni, nj) >= N || min(ni, nj) < 0 || vis[ni][nj] || F[ni][nj] == 1) continue;
dfs(dfs, ni, nj);
}
};
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
if (!vis[i][j] && F[i][j] == 0) {
dfs(dfs, i, j);
cnt += 1;
}
res += (F[i][j] == 0);
}
}
if (cnt > 1) return 0;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
if (F[i][j] == 1) {
if (i + 1 < N && i - 1 >= 0) {
if (F[i + 1][j] + F[i - 1][j] == 0) return 0;
}
if (j + 1 < N && j - 1 >= 0) {
if (F[i][j - 1] + F[i][j + 1] == 0) return 0;
}
}
}
}
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |