Submission #1024939

#TimeUsernameProblemLanguageResultExecution timeMemory
1024939MardonbekhazratovBeech Tree (IOI23_beechtree)C++17
9 / 100
54 ms18952 KiB
#include "beechtree.h" #include <algorithm> #include <map> using namespace std; int n,m; vector<int>p,c,ans; vector<vector<int>>v; vector<int>subtree; void dfs(int x){ subtree.push_back(x); for(int z:v[x]){ dfs(z); } } bool check(vector<int>s){ map<int,int>m; for(int i=1;i<s.size();i++){ if(s[m[c[s[i]]]]!=p[s[i]]) return false; m[c[s[i]]]++; } return true; } void sub1(){ for(int i=0;i<n;i++){ dfs(i); sort(subtree.begin(),subtree.end()); do{ if(check(subtree)){ ans[i]=1; break; } }while(next_permutation(subtree.begin(),subtree.end())); subtree.clear(); } } vector<int> beechtree(int N, int M, std::vector<int> P, std::vector<int> C){ n=N,m=M; swap(p,P); swap(c,C); v.resize(n); for(int i=1;i<n;i++){ v[p[i]].push_back(i); } ans.resize(n); if(n<=8) sub1(); return ans; }

Compilation message (stderr)

beechtree.cpp: In function 'bool check(std::vector<int>)':
beechtree.cpp:22:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     for(int i=1;i<s.size();i++){
      |                 ~^~~~~~~~~
#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...