Submission #1173087

#TimeUsernameProblemLanguageResultExecution timeMemory
1173087thecrazycandySeptember (APIO24_september)C++20
16 / 100
19 ms584 KiB
#include <bits/stdc++.h> using namespace std; int nw = 1; vector <int> g[2001]; int tin[2001], tout[2001]; void dfs (int v) { tin[v] = nw; for (auto i : g[v]) { dfs(i); nw++; } tout[v] = nw; } int solve (int n, int m, vector <int> v, vector <vector <int>> a) { int cnt = 0; for (int i = 1; i < n; i++) { g[v[i]].push_back(i); } dfs(0); for (int i = 0; i < n - 1; i++) { int ind = 0; int idx = 0, mn = 2001, mx = -1; for (int j = i + 1; j < n - 1; j++) { if (tin[a[0][i]] <= tin[a[0][j]] && tout[a[0][i]] >= tout[a[0][j]]) { ind = max(ind, j); } } cnt++; if (ind == 0) continue; for (int j = i + 1; j <= ind; j++) { if (tin[a[0][j]] <= tin[a[0][i]] && tout[a[0][j]] >= tout[a[0][i]] && tin[a[0][j]] <= mn && tout[a[0][j]] >= mx) { mx = tout[a[0][j]]; mn = tin[a[0][j]]; idx = j; } } if (idx == 0) { i = ind; continue; } i = idx - 1; cnt--; } for (int i = 0; i < n; i++) g[i].clear(); return cnt; }
#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...