제출 #1202198

#제출 시각아이디문제언어결과실행 시간메모리
1202198ismoilmirzouz9월 (APIO24_september)C++20
100 / 100
122 ms20160 KiB
#include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for (int i=a; i<b; i++) int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { // cout<<"f"<<endl; int n = N, m = M; vector<int> adj[n+1]; rep(i, 1, n) { // cout<<F[i]<<" "<<i<<"\n"; adj[F[i]].push_back(i); } vector<int> dp(n+1, -1); rep(j,0,m){ rep(i,0,n-1){ dp[S[j][i]] = max(dp[S[j][i]], i); } } function<void(int, int)> dfs = [&](int u, int p) { for (auto v: adj[u]){ if (v == p) continue; dfs(v, u); dp[u] = max(dp[u], dp[v]); } }; dfs(0, -1); int ans = 0; int nxt = -1; // rep(i,1,n+1){ // cout<<dp[i]<<" "; // } // cout<<"\n"; rep(i, 0, n-1){ // cout<<i<<" "<<nxt<<endl; if (i > nxt){ ans++; } nxt = max(dp[S[0][i]],nxt); } 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...