제출 #1160176

#제출 시각아이디문제언어결과실행 시간메모리
1160176pensive9월 (APIO24_september)C++20
55 / 100
1048 ms11792 KiB
#include "september.h" #include <unordered_set> #include <vector> using namespace std; #define REP(a,i,n) for (int i=a;i<n;i++) void loadChildren(int N, vector<int> F, vector<vector<int>> &childs) { REP(1,i,N) { childs[F[i]].push_back(i); } } void including(int parent, vector<vector<int>> &childs, int visited[], unordered_set<int> &leafed) { visited[parent]=1; leafed.insert(parent); for (auto leaf : childs[parent]) { if (!visited[leaf]) { including(leaf, childs, visited, leafed); } } } int solve(int N, int M, vector<int> F, vector<vector<int>> S) { unordered_set<int> leafed; vector<vector<int>> childs(200001); int freq[200001], visited[200001]; int K=0; fill(freq, freq+200001, 0); fill(visited, visited+200001, 0); loadChildren(N, F, childs); REP(0,i,N-1) { REP(0, log, M) { int leaf = S[log][i]; freq[leaf]++; if (!visited[leaf]) { including(leaf, childs, visited, leafed); } if (freq[leaf]>=M) { leafed.erase(leaf); } } if (leafed.size()==0) { K++; } } return K; }
#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...