제출 #603478

#제출 시각아이디문제언어결과실행 시간메모리
603478SeDunionSplit the Attractions (IOI19_split)C++17
18 / 100
89 ms16860 KiB
#include "split.h" #include<iostream> #include<vector> #include<assert.h> using namespace std; const int N = 2e5 + 123; vector<int>g[N]; 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); } } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { vector<int>ans(n, 3); 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]); } int root = 0; for (int i = 0 ; i < n ; ++ i) { if ((int)g[i].size() == 1) root = i; } 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...