#include "september.h"
#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const ll N = 1e5 + 5;
vector<ll> g[N];
ll need[N];
void dfs(ll v)
{
for (ll to : g[v])
dfs(to), need[v] = max(need[v], need[to]);
}
int solve(int n, int m, std::vector<int> p, std::vector<std::vector<int>> a)
{
ll deg[n + 1];
p.insert(p.begin(), 0);
for (ll i = 1; i <= n; i++)
g[i].clear();
for (ll i = 1; i <= n; i++)
p[i]++, g[p[i]].push_back(i);
for (ll i = 1; i <= n; i++)
deg[i] = 0;
for (ll i = 1; i <= n; i++)
deg[p[i]]++;
ll freq[n + 1], cnt = 0;
for (ll i = 1; i <= n; i++)
freq[i] = 0;
for (ll i = 0; i < m; i++)
{
a[i].insert(a[i].begin(), 0);
for (ll j = 1; j < n; j++)
a[i][j]++;
}
for (ll i = 1; i < n; i++) need[a[0][i]] = i;
dfs(1);
ll ans = 0, mx = 0;
for (ll i = 1; i < n; i++)
{
for (ll j = 0; j < m; j++)
{
cnt += !freq[a[j][i]];
freq[a[j][i]]++;
cnt -= freq[a[j][i]] == m;
}
mx = max(mx, need[a[0][i]]);
if (!cnt and mx <= i)
ans++;
}
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... |