제출 #1233966

#제출 시각아이디문제언어결과실행 시간메모리
1233966MuhammadSaram참나무 (IOI23_beechtree)C++20
8 / 100
78 ms58184 KiB
#include "beechtree.h" #include <bits/stdc++.h> using namespace std; #define all(v) v.begin(), v.end() const int M = 2e5 + 1; vector<int> nei[M],v[M],ans; bool b[M]; void dfs(int u) { int cnt=0,x; for (int i:nei[u]) { if (nei[i].size()) cnt++,x=i; dfs(i); } if (!cnt) ans[u]=b[u]=1; set<int> se; for (int i:v[u]) se.insert(i); if (se.size()!=v[u].size()) { ans[u]=0; return; } if (cnt!=1 or !b[x] or !ans[x]) return; ans[u]=1; for (int i:v[x]) if (!se.count(i)) ans[u]=0; } vector<int> beechtree(int n, int m, vector<int> p, vector<int> c) { for (int i=n-1;i>0;i--) nei[p[i]].push_back(i),v[p[i]].push_back(c[i]); ans=vector<int>(n); dfs(0); 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...