제출 #1193974

#제출 시각아이디문제언어결과실행 시간메모리
1193974zh_hSeptember (APIO24_september)C++20
0 / 100
1095 ms1114112 KiB
#include <bits/stdc++.h> #define pb push_back #define lint long long int using namespace std; // vector<int> mx, subtree_mx; vector<int> mx; vector<vector<int>> edge; void dfs(int v, int p) { // subtree_mx[v] = mx[v]; for (auto i : edge[v]) { if (i == p) continue; dfs(i, v); // subtree_mx[v] = max(subtree_mx[v], subtree_mx[i]); mx[v] = max(mx[v], mx[i]); } } int solve (int n, int m, vector<int> parent, vector<vector<int>> s) { edge.resize(n); for (int i = 1; i < n; i ++) { edge[i].pb(parent[i]); edge[parent[i]].pb(i); } mx.resize(n, -1); for (int i = 0; i < m; i ++) { for (int j = 0; j < n-1; j ++) { mx[s[i][j]] = max(mx[s[i][j]], j); } } // subtree_mx.resize(n, 0); dfs(0, -1); int cur_mx = 0; int cur_i = 0; int ans = 0; while (cur_i < n-1) { ans ++; cur_mx = cur_i; while (cur_i <= cur_mx) { cur_mx = max(cur_mx, mx[s[0][cur_i]]); cur_i ++; } } 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...