제출 #1064541

#제출 시각아이디문제언어결과실행 시간메모리
1064541Shadow19월 (APIO24_september)C++17
45 / 100
305 ms24160 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; #define output_vector(v) for(auto &x : v){cout << x << ' ';}cout << '\n'; #define show(x) cerr << (#x) << " = " << (x) << '\n'; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { int ans = N; vector<vector<int>> child(N); for(int i=1; i<N; ++i) { child[F[i]].push_back(i); } for(int i=0; i<M; ++i) { int cnt = 0; set<int> cur; vector<set<int>> c(N); for(int j=0; j<N; ++j) { for(auto &k : child[j]) c[j].insert(k); } for(int j=0; j<N-1; ++j) { int k = S[i][j]; cur.insert(k); while(k > 0 && cur.count(k) && c[k].empty()) { cur.erase(k); c[F[k]].erase(k); k = F[k]; } cnt += (cur.empty()); } ans = min(ans, cnt); } return ans; } // void taskcase() { // int N, M; // assert(2 == scanf("%d%d", &N, &M)); // std::vector<int> F(N); // F[0] = -1; // for (int i = 1; i < N; ++i) // assert(1 == scanf("%d", &F[i])); // std::vector<std::vector<int>> S(M, std::vector<int>(N - 1)); // for (int i = 0; i < M; ++i) // for (int j = 0; j < N - 1; ++j) // assert(1 == scanf("%d", &S[i][j])); // printf("%d\n", solve(N, M, F, S)); // } // int main() { // int T; // assert(1 == scanf("%d", &T)); // while(T--) taskcase(); // return 0; // }
#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...