제출 #821374

#제출 시각아이디문제언어결과실행 시간메모리
821374BaytoroSplit the Attractions (IOI19_split)C++17
0 / 100
38 ms8496 KiB
#include "split.h" //#include "grader.cpp" #include <bits/stdc++.h> using namespace std; const int maxN=1e5+5; vector<int> ans,g[maxN]; void dfs(int x, int d, int c, int p=-1){ if(d==0) return; ans[x]=c; for(auto it: g[x]){ if(it==p) continue; dfs(it,d-1,c,x); } } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { ans.resize(n); int A=a,B=b,C=c; if(A>B) swap(A,B); if(B>C) swap(B,C); if(A>B) swap(A,B); bool ok=1; for(int i=0;i<(int)p.size();i++){ g[p[i]].push_back(q[i]); g[q[i]].push_back(p[i]); } bool cc=1; for(int i=0;i<n;i++){ if(g[i].size()>2) cc=0; if(g[i].size()==1 && ok){ dfs(i,a,1); ok=0; } else if(g[i].size()==1 && !ok){ dfs(i,b,2); break; } } if(!cc && n==6){ vector<int> ans(n); return ans; } for(int i=0;i<n;i++){ if(!ans[i]) ans[i]=3; } return ans; }
#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...