#include "september.h"
#include <bits/stdc++.h>
// #pragma GCC optimize("O3", "unroll-loops")
#define ll long long
#define pb push_back
#define fi first
#define se second
#define lf (id<<1)
#define rg ((id<<1)|1)
#define md ((l+r)>>1)
#define ld long double
using namespace std;
typedef pair<ll,ll> pii;
typedef pair<pii,ll> ipii;
const ll MAXN = 1e5+10;
const ll MOD = 1000000;
const ll INF = 1e9+10;
const ll SQRT = 6500;
const ll BL = INF/SQRT+1;
ll sum(auto a, auto b){ return (a+MOD+b)%MOD; }
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int n, m;
int par[MAXN];
vector<int> adj[MAXN];
int arr[7][MAXN], cnt[MAXN];
bool done[MAXN];
set <int> tag;
void dfs(int nw){
if(done[nw]) return;
// cout << nw << " nw\n";
done[nw] = 1;
tag.insert(nw);
for(auto nx : adj[nw]){
if(done[nx]) continue;
dfs(nx);
}
}
void RESET(){
tag.clear();
for(int i=0; i<=n+1; i++){
done[i] = 0; adj[i].clear();
cnt[i] = 0;
}
}
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
n = N; m = M;
assert(F.size() == n);
for(int i=2; i<=n; i++){
par[i] = F[i-1]+1;
adj[par[i]].pb(i);
}
for(int i=1; i<=m; i++){
for(int j=1; j<=n-1; j++){
arr[i][j] = S[i-1][j-1]+1;
}
}
int tot = 0;
for(int i=1; i<=n-1; ){
// cout << i << ' ' << arr[1][i] << " arr\n";
tot++;
do {
for(int j=1; j<=m; j++){
dfs(arr[j][i]);
cnt[ arr[j][i] ]++;
if(cnt[ arr[j][i] ] == m) tag.erase(arr[j][i]);
}
i++;
} while(!tag.empty());
}
RESET();
return tot;
}
# | 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... |