#include "bits/stdc++.h"
#include "september.h"
using namespace std;
using ll = long long;
int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
vector<int> cnt(N,0);
vector<int> dist_to_leaf(N,-1);
for (int x=0; x<N; x++) {
int cnt = 0;
dist_to_leaf[x] = max(dist_to_leaf[x],0);
int node = x;
while (true) {
if (node == 0) {
break;
}
else {
dist_to_leaf[F[node]] = max(dist_to_leaf[node]+1,dist_to_leaf[F[node]]);
node = F[node];
}
}
}
int idx = 0;
for (int day=1; ; day++) {
while (true) {
for (int i=0; i<M; i++) {
int node = S[i][idx];
cnt[node]++;
int cur_node = node;
while (true) {
if (cur_node == 0) {
break;
}
if (dist_to_leaf[cur_node] == 0) {
dist_to_leaf[F[cur_node]]--;
}
cur_node = F[cur_node];
}
}
bool ok = true;
for (int i=0; i<N; i++) {
if (cnt[i] == M && dist_to_leaf[i]!=0) {
ok = false;
break;
}
}
if (ok) {
idx++;
break;
}
else {
idx++;
}
}
if (idx<=N-1) {
return day;
}
}
}
# | 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... |