#include "soccer.h"
#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> v;
vector<int> used;
int k[2];
vector<int> g[2];
void dfs(int x, int p) {
used[x] = 1;
k[p]++;
// g[p].push_back(x);
for (auto to : v[x]) {
if (used[to])
continue;
dfs(to, p ^ 1);
}
}
int biggest_stadium(int N, vector<vector<int>> F) {
int res = 0;
v.resize(N * N);
used.resize(N * N);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (F[i][j]) {
for (int x = 0; x < i; x++) {
if (F[x][j])
continue;
for (int y = i + 1; y < N; y++) {
if (F[y][j])
continue;
// cout << N * x + j << " <-> " << N * y + j << "\n";
v[N * x + j].push_back(N * y + j);
v[N * y + j].push_back(N * x + j);
}
}
for (int x = 0; x < j; x++) {
if (F[i][x])
continue;
for (int y = j + 1; y < N; y++) {
if (F[i][y])
continue;
// cout << N * i + x << " <-> " << N * i + y << "\n";
v[N * i + x].push_back(N * i + y);
v[N * i + y].push_back(N * i + x);
}
}
}
}
}
for (int i = 0; i < N * N; i++) {
if (used[i] || F[i / N][i % N])
continue;
k[0] = k[1] = 0;
// g[0].clear();
// g[1].clear();
dfs(i, 0);
// for (int j = 0; j < 2; j++) {
// cout << j << ": ";
// for (auto z : g[j])
// cout << z << " ";
// cout << "\n";
// }
// cout << "\n";
// cout << k[0] << " " << k[1] << "\n";
res += max(k[0], k[1]);
}
// cout << res << "\n";
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... |