#include "september.h"
#include <vector>
#include <map>
#include <queue>
#include <set>
using namespace std;
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
vector<vector<int>> adj(N);
vector<int> deg(N);
for (int i = 1; i < N; i++) {
adj[i].push_back(F[i]);
adj[F[i]].push_back(i);
deg[F[i]]++;
deg[i]++;
}
int ans = 0;
map<int, int> freq, m;
m[0] = N-1;
int nodes = N, edges = N-1;
set<int> s;
for (int i = 0; i < N-1; i++) {
for (int j = 0; j < M; j++) {
m[freq[S[j][i]]]--;
freq[S[j][i]]++;
m[freq[S[j][i]]]++;
s.insert(S[j][i]);
}
if (m[0]+m[M] == N-1) {
nodes -= s.size();
for (auto x : s) {
int cnter = 0;
for (auto e : adj[x]) {
if (deg[e]) deg[e]--;
else cnter++;
}
edges -= adj[x].size()-cnter;
deg[x] = 0;
}
if (nodes == edges+1) {
ans++;
s.clear();
}
}
}
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... |