제출 #1233946

#제출 시각아이디문제언어결과실행 시간메모리
1233946MuhammadSaram참나무 (IOI23_beechtree)C++20
0 / 100
6 ms9800 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) { if (nei[u].empty()) ans[u]=1; int cnt=0; for (int i:nei[u]) dfs(i),cnt+=(!nei[i].empty()); if (!cnt) ans[u]=b[u]=1; if (nei[u].size()!=v[u].size()) { ans[u]=0; return; } if (cnt>1) return; set<int> se; for (int i:v[u]) se.insert(i); for (int i:nei[u]) { if (v[i].empty() or !b[i]) continue; ans[u]=ans[i]; for (int j:v[i]) if (!se.count(j)) 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]); sort(all(v[i])),v[i].resize(unique(all(v[i]))-begin(v[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...