Submission #1194741

#TimeUsernameProblemLanguageResultExecution timeMemory
1194741Mousa_AboubakerSeptember (APIO24_september)C++20
0 / 100
0 ms776 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; int solve(int N, int M, vector<int> F, vector<vector<int>> S) { vector<vector<int>> adj(N, vector<int>()); for(int i = 1; i < N; i++) adj[F[i]].push_back(i); vector<bool> vis(N, false); vector<vector<int>> pos(M, vector<int>(N)); for(int i = 0; i < M; i++) for(int j = 0; j < N - 1; j++) pos[i][S[i][j]] = j; int K = 0; int mx = 0; auto dfs = [&](auto self, int u) -> void { if(vis[u]) return; for(int i = 0; i < M; i++) if(mx < pos[i][u]) mx = pos[i][u]; vis[u] = true; for(auto i: adj[u]) self(self, i); }; for(int i = 0; i < N - 1;) { dfs(dfs, S[0][i]); while(i < mx) { dfs(dfs, S[0][i]); i++; } K++; mx++; } return K - 1; }
#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...