제출 #1278610

#제출 시각아이디문제언어결과실행 시간메모리
1278610Bui_Quoc_Cuong9월 (APIO24_september)C++20
100 / 100
109 ms17464 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 2e5 + 5; int n, m; vector <int> g[maxn]; int s[10][maxn]; int far[10][maxn]; int max_node[maxn]; void dfs (int u) { for (int &v : g[u]) { dfs(v); max_node[u] = max(max_node[u], max_node[v]); } } int solve (int N, int M, vector <int> F, vector <vector <int>> S) { n = N; m = M; for (int i = 0; i < n; i++) { int u = F[i]; if (u == - 1) continue; g[u].push_back(i); } for (int i = 0; i < m; i++) { for (int j = 0; j < n - 1; j++) s[i][j] = S[i][j]; for (int j = 0; j < n - 1; j++) max_node[s[i][j]] = max(max_node[s[i][j]], j); } dfs(0); int ans = 0, last = - 1; for (int i = 0; i < n - 1; i++) { if (last < i) ans++; for (int j = 0; j < m; j++) { last = max(last, max_node[s[j][i]]); } } for (int i = 0; i < n; i++) { max_node[i] = 0; g[i].clear(); } return ans; }
#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...