Submission #543817

#TimeUsernameProblemLanguageResultExecution timeMemory
543817KriptonSplit the Attractions (IOI19_split)C++17
0 / 100
467 ms1048576 KiB
#include <bits/stdc++.h> #include "split.h" using namespace std; vector <int> v[100000]; int rez[100000],mar[100000]; int a,b,c; void dfscolor(int nod,int papa,int col) { rez[nod]=col; for(auto it:v[nod]) if(it!=papa) dfscolor(it,nod,col); } void dfs(int nod,int papa) { if(min(a,min(b,c))==0) return; mar[nod]=1; for(auto it:v[nod]) if(it!=papa) { dfs(it,nod); mar[nod]+=mar[it]; } if(mar[nod]==a) { a=0; mar[nod]=0; dfscolor(nod,papa,1); return; } if(mar[nod]==b) { b=0; mar[nod]=0; dfscolor(nod,papa,2); return; } if(mar[nod]==c) { c=0; mar[nod]=0; dfscolor(nod,papa,3); return; } } void dfsnew(int nod,int papa,int col,int &a) { if(!a) return; a--; rez[nod]=col; for(auto it:v[nod]) if(it!=papa&&!rez[it]) dfsnew(it,nod,col,a); } vector<int> find_split(int n, int A, int B, int C, vector<int> p, vector<int> q) { a=A; b=B; c=C; int i; for(i=0; i<p.size(); i++) { v[p[i]].push_back(q[i]); v[q[i]].push_back(p[i]); } dfs(0,-1); vector <int> ans; if(min(a,min(b,c))!=0) { for(i=0; i<n; i++) ans.push_back(0); return ans; } for(i=0; i<n; i++) if(!rez[i]) { if(a) dfsnew(i,-1,1,a); else if(b) dfsnew(i,-1,2,b); else dfsnew(i,-1,3,c); } for(i=0; i<n; i++) if(!rez[i]) { if(a) rez[i]=1; if(b) rez[i]=2; if(c) rez[i]=3; } for(i=0; i<n; i++) ans.push_back(rez[i]); return ans; }

Compilation message (stderr)

split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:63:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |     for(i=0; i<p.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...