Submission #1155715

#TimeUsernameProblemLanguageResultExecution timeMemory
1155715blackslexSeptember (APIO24_september)C++20
11 / 100
0 ms328 KiB
#include "september.h" #include <vector> #include<bits/stdc++.h> using namespace std; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { int n = N, m = M; vector<vector<int>> v(n, vector<int>()); vector<vector<int>> pos(m, vector<int>(n)); int t = -1; for (int i = 1; i < n; i++) { v[F[i]].emplace_back(i); } for (int i = 0; i < m; i++) { for (int j = 0; j < n - 1; j++) { pos[i][S[i][j]] = j; } } auto dfs = [&] (auto &&dfs, int cur, int par) -> void { for (auto &e: v[cur]) { if (par == e) continue; dfs(dfs, e, cur); for (int i = 0; i < m; i++) { pos[i][cur] = max(pos[i][cur], pos[i][e]); } } }; dfs(dfs, 0, -1); int ans = 0; vector<int> ptr(m); for (int i = 0; ; i++) { int mx = -1; for (int j = 0; j < m; j++) { mx = max(mx, pos[j][S[j][ptr[j]]]); } for (int j = 0; j < m; j++) { ptr[j] = mx + 1; } ans++; if (mx + 1 >= n - 1) break; } return ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...