Submission #147480

#TimeUsernameProblemLanguageResultExecution timeMemory
147480mosiashvililukaSplit the Attractions (IOI19_split)C++14
18 / 100
116 ms12724 KiB
#include<bits/stdc++.h> using namespace std; int z,x,d,e,ka[10],zx,m,la[100009]; vector <int> pas,v[100009]; bool bo[100009]; void dfs(int w){ if(ka[zx]==0) return; bo[w]=1; pas[w]=zx; ka[zx]--; if(ka[zx]==0) return; for(vector <int>::iterator it=v[w].begin(); it!=v[w].end(); it++){ if(bo[(*it)]==1) continue; dfs((*it)); if(ka[zx]==0) return; } } void dfs2(int w){ if(ka[zx]==0) return; bo[w]=1; pas[w]=zx; ka[zx]--; if(ka[zx]==0) return; for(vector <int>::iterator it=v[w].begin(); it!=v[w].end(); it++){ if(bo[(*it)]==1) continue; dfs2((*it)); if(ka[zx]==0) return; } } vector <int> find_split(int n, int a, int b, int c, vector <int> p, vector <int> q){ pas.resize(n); ka[1]=a; ka[2]=b; ka[3]=c; zx=0; m=p.size(); for(int h=0; h<m; h++){ v[p[h]].push_back(q[h]); v[q[h]].push_back(p[h]); } if(a!=1){ zx=0; for(d=0; d<n; d++){ if(v[d].size()!=1) continue; if(bo[d]==0){ zx++; dfs(d); } } if(zx!=0){ for(d=0; d<n; d++) if(pas[d]==0) pas[d]=3; }else{ zx=0; for(d=0; d<n; d++){ if(bo[d]==0){ zx++; dfs(d); break; } } for(d=0; d<n; d++){ if(bo[d]==1){ for(vector <int>::iterator it=v[d].begin(); it!=v[d].end(); it++){ if(bo[(*it)]==1) continue; zx++; dfs((*it)); break; } if(zx==2) break; } } for(d=0; d<n; d++){ if(bo[d]==0){ zx++; dfs(d); break; } } } }else{ zx=2; dfs2(0); for(d=0; d<n; d++){ if(pas[d]==0){pas[d]=1;break;} } for(d=0; d<n; d++) if(pas[d]==0) pas[d]=3; } return pas; }
#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...