Submission #726011

#TimeUsernameProblemLanguageResultExecution timeMemory
726011alvingogoSplit the Attractions (IOI19_split)C++14
0 / 100
70 ms9772 KiB
#include "split.h" #include <bits/stdc++.h> using namespace std; vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { int m=p.size(); vector<vector<int> > e(n); for(int i=0;i<m;i++){ e[p[i]].push_back(q[i]); e[q[i]].push_back(p[i]); } if(m==n-1){ vector<int> sz(n),fa(n); function<void(int,int)> dfs=[&](int r,int f){ fa[r]=f; sz[r]=1; for(auto h:e[r]){ if(h!=f){ dfs(h,r); sz[r]+=sz[h]; } } }; vector<int> ans(n); function<int(int,int,int,int)> dfs2=[&](int r,int f,int p,int u){ ans[r]=p; u--; if(u==0){ return u; } for(auto h:e[r]){ if(h!=f){ u=dfs2(h,r,p,u); if(u==0){ return u; } } } return u; }; dfs(0,0); int ak[3]={1,2,3}; if(a>b){ swap(a,b); swap(ak[0],ak[1]); } if(b>c){ swap(b,c); swap(ak[1],ak[2]); } if(a>b){ swap(a,b); swap(ak[0],ak[1]); } for(int i=0;i<n;i++){ int x=sz[i],y=n-sz[i]; if(x>=a && y>=b){ dfs2(i,fa[i],ak[0],a); dfs2(fa[i],i,ak[1],b); for(int j=0;j<n;j++){ if(!ans[j]){ ans[j]=ak[2]; } } return ans; } } return ans; } vector<int> res; for(int i=0;i<n;i++){ } 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...