제출 #821404

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