제출 #1203312

#제출 시각아이디문제언어결과실행 시간메모리
1203312hyl_backupSeptember (APIO24_september)C++20
100 / 100
320 ms11440 KiB
#include "september.h" #include <vector> #include <map> #include <iostream> struct node { std::vector<int> chl; int checked = 0; }; int n, m; std::map<int, int> map; void get(int leaf, node tree[]){ //std::cout << "Pos: "<< leaf <<'\n'; if(tree[leaf].checked){ return; } tree[leaf].checked = 1; if(map.find(leaf)==map.end()){ map[leaf] = m; for(int x : tree[leaf].chl){ get(x, tree); } } return; } int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { map.clear(); int ans = 0; n = N; m = M; node tree[n]; for(int i = 1; i<n; ++i){ tree[F[i]].chl.push_back(i); } for(int i = 0; i<n-1; ++i){ for(int j = 0; j<m; ++j){ //std::cout << j << ':' << i <<'\n'; int leaf = S[j][i]; //std::cout << leaf << '\n'; get(leaf, tree); --map[leaf]; if(map[leaf]==0){ //map.erase(map.find([leaf])); //std::cout << map.size()<<" siz1\n"; map.erase(leaf); //std::cout << map.size()<<" siz2\n"; } if(map.empty()){ ++ans; } } } //std::cout << ans<<" ans\n"; 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...