제출 #1202429

#제출 시각아이디문제언어결과실행 시간메모리
1202429ElayV13September (APIO24_september)C++20
25 / 100
94 ms3028 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 1;; const int INF = INT_MAX; vector < int > adj[N]; int idx[N] , sub[N]; int cur_idx = 0; void dfs(int v , int p) { sub[v] = 1; idx[v] = ++cur_idx; for(int u : adj[v]) { if(u != p) { dfs(u , v); sub[v] += sub[u]; } } } bool is_anc(int u , int v) { if(idx[v] >= idx[u] && idx[u] + sub[u] - 1 >= idx[v]) return true; return false; } void fix(int n) { for(int i = 0;i <= n;i++) adj[i].clear() , idx[i] = 0 , sub[i] = 0; cur_idx = 0; } int solve(int n , int m , vector < int > F , vector < vector < int > > S) { for(int i = 1;i <= n - 1;i++) { adj[i].push_back(F[i]); adj[F[i]].push_back(i); } dfs(0 , -1); int res = -1; for(int bit = 0;bit < (1 << S[0].size());bit++) { vector < vector < vector < int > > > g(m); vector < vector < int > > cur(m); int cnt = 0; for(int i = 0;i < n - 1;i++) { for(int j = 0;j < m;j++) cur[j].push_back(S[j][i]); if((1 << i) & bit) { cnt++; for(int j = 0;j < m;j++) { g[j].push_back(cur[j]); cur[j].clear(); } } } if(cur[0].size() > 0) { cnt++; for(int j = 0;j < m;j++) g[j].push_back(cur[j]); } for(int i = 0;i < g.size();i++) { for(int j = 0;j < g[i].size();j++) { sort(g[i][j].begin() , g[i][j].end()); } } bool can = 1; for(int i = 0;i < cnt;i++) { set < vector < int > > st; for(int j = 0;j < m;j++) st.insert(g[j][i]); if(st.size() != 1) can = 0; } if(!can) continue; can = 1; for(int i = 0;i < m;i++) { for(int j = 0;j < g[i].size() - 1;j++) { for(int k = j + 1;k < g[i].size();k++) { vector < int > fi = g[i][j]; vector < int > si = g[i][k]; for(int u : fi){ for(int v : si){ if(is_anc(u , v)) can = 0; } } } } } if(can) res = max(res , cnt); } fix(n); return res; }
#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...