Submission #980925

#TimeUsernameProblemLanguageResultExecution timeMemory
980925vjudge1참나무 (IOI23_beechtree)C++17
9 / 100
47 ms16080 KiB
#include "beechtree.h" using namespace std; #define pb push_back #include<bits/stdc++.h> #define deb(x) cout<<#x<<": "<<x<<endl; bool DFS (int N, vector<vector<int>> &sons,vector<int> &P, vector<int> &C){ if(sons[N].size()==0) return true; vector<int> st; st.pb(N); queue<int> q; for(int x: sons[N]){ q.push(x); } while(!q.empty()){ int x=q.front(); q.pop(); st.pb(x); for(int a:sons[x]){ q.push(a); } } sort(st.begin(), st.end()); do{ vector<int> colors; //colors.pb(C[st[0]]); bool works=true; for(int i=1; i<st.size(); ++i){ int cont=0; for(int x: colors){ if(x==C[st[i]]){ cont++; } } if(st[cont]!=P[st[i]]){ works=false; break; } colors.pb(C[st[i]]); } if(works){ return true; } }while(next_permutation(st.begin()+1, st.end())); return false; } vector<int> beechtree(int N, int M, vector<int> P, vector<int> C) { vector<vector<int>> sons (N); for(int i=1;i<N; ++i){ sons[P[i]].pb(i); } if(N<=8){ vector<int> ans (N,0); for(int i=0; i<N; ++i){ if(DFS(i, sons, P, C)){ ans[i]=1; } } return ans; } vector<int> ord; ord.pb(0); while(sons[ord[ord.size()-1]].size()!=0){ ord.pb(sons[ord[ord.size()-1]][0]); } vector<int> ans (N, 0); reverse(ord.begin(), ord.end()); ans[ord[0]]=1; int color=C[ord[0]]; for(int i=0; i<ord.size(); ++i){ if(C[ord[0]]==color){ ans[ord[i+1]]=1; } else{ return ans; } } return {}; }

Compilation message (stderr)

beechtree.cpp: In function 'bool DFS(int, std::vector<std::vector<int> >&, std::vector<int>&, std::vector<int>&)':
beechtree.cpp:29:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |         for(int i=1; i<st.size(); ++i){
      |                      ~^~~~~~~~~~
beechtree.cpp: In function 'std::vector<int> beechtree(int, int, std::vector<int>, std::vector<int>)':
beechtree.cpp:76:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   76 |     for(int i=0; i<ord.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...