제출 #912668

#제출 시각아이디문제언어결과실행 시간메모리
912668Ludissey참나무 (IOI23_beechtree)C++17
9 / 100
62 ms17492 KiB
#include "beechtree.h" #include <bits/stdc++.h> using namespace std; int N,M; vector<vector<int>> child; vector<int> C; vector<int> P; vector<int> outp; std::vector<int> beechtree(int n, int m, std::vector<int> p, std::vector<int> c) { N=n; M=m; C.assign(c.begin(), c.end()); P.assign(p.begin(), p.end()); child.resize(n); outp.resize(n,0); for (int i = 1; i < N; i++) child[P[i]].push_back(i); bool df=true; outp[0]=1; vector<pair<int,int>> childr; unordered_set<int> ccolors; for (int i = 1; i < n; i++) { if(P[i]==0){ childr.push_back({child[i].size(),i}); unordered_set<int> clors; if(ccolors.find(c[i])!=ccolors.end()) outp[0]=0; ccolors.insert(c[i]); outp[i]=1; for (auto u : child[i]) { if(clors.find(c[u])!=clors.end()) { outp[i]=0; df=false; break; } // la couleur est la meme dans un arbre clors.insert(c[u]); } } else if(child[i].size()==0) outp[i]=1; } if(!df) { outp[0]=0; return {outp}; } sort(childr.begin(), childr.end(),greater<pair<int,int>>()); unordered_set<int> colors; for (int i = 0; i < (int)child[0].size(); i++) colors.insert(c[child[0][i]]); // la couleur est la meme dans un arbre for (int i = 0; i < (int)childr.size(); i++) { unordered_set<int> colors2; for (auto u : child[childr[i].second]) { if(colors.find(c[u])==colors.end()) { outp[0]=0; break; } // color in subtree is not in other tree colors.insert(c[u]); colors2.insert(c[u]); } colors.clear(); colors=colors2; if(outp[0]==0) break; } return {outp}; }
#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...