Submission #1047549

#TimeUsernameProblemLanguageResultExecution timeMemory
1047549Kel_MahmutSplit the Attractions (IOI19_split)C++14
0 / 100
1 ms348 KiB
#include "split.h" #include <bits/stdc++.h> #define pb push_back // #define endl ("\n") #define all(aa) aa.begin(), aa.end() typedef long long ll; using namespace std; vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { int m = q.size(); vector<vector<int>> g(n); for(int i = 0; i < m; i++){ g[q[i]].pb(p[i]); g[p[i]].pb(q[i]); } vector<int> vis(n); vector<int> color(n); int lim = 0; int cnt = 0; function<void(int, int)> dfs = [&](int u, int col){ cnt++; color[u] = col; vis[u] = 1; if(cnt == lim) return; for(int v : g[u]){ if(vis[v]) continue; dfs(v, col); if(cnt == lim) return; } }; vector<int> deg1; for(int i = 0; i < n; i++) if(g[i].size() == 1) deg1.pb(i); lim = a; cnt = 0; if(deg1.size()) dfs(deg1[0], 1); else{ for(int i = 0; i < n; i++){ if(!vis[i]){ dfs(i, 1); break; } } } lim = b; cnt = 0; if(deg1.size()) dfs(deg1[1], 2); else{ for(int i = 0; i < n; i++){ if(!vis[i]){ dfs(i, 2); break; } } } lim = c; cnt = 0; for(int i = 0; i < n; i++){ if(!vis[i]){ dfs(i, 3); break; } } return color; }
#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...