제출 #1029875

#제출 시각아이디문제언어결과실행 시간메모리
1029875Mr_Husanboy참나무 (IOI23_beechtree)C++17
0 / 100
1 ms440 KiB
#include "beechtree.h" #include <bits/stdc++.h> #ifdef LOCAL #include "debugger.cpp" #else #define debug(...) #endif using namespace std; #define ff first #define ss second #define all(a) (a).begin(), (a).end() #define ll long long template<typename T> int len(T &a){ return a.size(); } mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); vector<int> beechtree(int n, int m, std::vector<int> par, std::vector<int> col) { vector<vector<int>> g(n); for(int i = 1; i < n; i ++){ g[par[i]].push_back(i); col[i] --; } vector<int> cnt(m + 1); vector<int> res(n); bool ok = 1; set<int> al; vector<int> occ(n + 1); for(int i = 1; i < n; i ++) cnt[col[i]] ++, al.insert(col[i]); for(int i = 1; i < n; i ++){ set<int> st; for(auto u : g[i]){ st.insert(col[u]); } if(len(st) == len(g[i])){ res[i] = 1; }else{ ok = 0; } } if(!ok){ return res; } set<int> st; int c = 0; for(auto u : g[0]){ st.insert(col[u]); if(len(g[u])){ c ++; occ[cnt[u]] ++; //cout << cnt[u] << ' ' << u + 1 << endl; } } if(len(st) != len(g[0]) || len(st) != len(al)){ return res; } if(*max_element(all(occ)) > 2){ return res; } cout << c << endl; for(int i = 1; i <= c; i ++){ if(occ[c] > 1) return res; } res[0] = 1; return res; }
#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...