#include "september.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
int ans = 0;
int check (vector<vector<int>> &S, vector<int> &perm) {
int k = 0;
set<int> s;
vector<set<int>> ss(S.size());
for (int i = 0; i < perm.size(); i++) {
s.insert(perm[i]);
bool yes = true;
for (int j = 0; j < S.size(); j++) {
ss[j].insert(S[j][i]);
if (ss[j] != s) yes = false;
}
if (yes) k++;
}
return k;
}
void permutation (vector<int> graph, vector<int> perm, vector<vector<int>> &S) {
if (perm.size() == graph.size()-1) {
ans = max(ans, check(S, perm));
return;
}
vector<bool> occ(graph.size(), 0);
for (int i = 1; i < graph.size(); i++)
occ[graph[i]] = 1;
for (int i = 1; i <= graph.size()-1; i++) {
if (occ[i]) continue;
vector<int> tmp = perm;
tmp.push_back(i);
vector<int> tmp_graph = graph;
tmp_graph[i] = i;
permutation(tmp_graph, tmp, S);
break;
}
}
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
ans = 0;
permutation(F, {}, S);
return ans;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |