제출 #603459

#제출 시각아이디문제언어결과실행 시간메모리
603459SeDunionSplit the Attractions (IOI19_split)C++17
0 / 100
7 ms9940 KiB
#include "split.h" #include<iostream> #include<vector> using namespace std; const int N = 2e5 + 123; vector<int>g[N]; int A, B; int used[N]; vector<int>vec; void dfs(int v) { vec.emplace_back(v); used[v] = 1; for (int to : g[v]) if (!used[to]) { dfs(to); } } #include<assert.h> vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { vector<int>ans(n); int m = p.size(); for (int i = 0 ; i < m ; ++ i) { g[p[i]].emplace_back(q[i]); g[q[i]].emplace_back(p[i]); } if (a > b) swap(a, b); if (b > c) swap(b, c); if (a > b) swap(a, b); A = a, B = b; int root = 0; while ((int)g[root].size() == 2) ++root; dfs(root); assert((int)vec.size() == n); for (int i = 0 ; i < a ; ++ i) ans[vec[i]] = 1; for (int i = 0 ; i < b ; ++ i) ans[vec[i+a]] = 2; for (int i = 0 ; i < c ; ++ i) ans[vec[i+a+b]] = 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...