Submission #144011

#TimeUsernameProblemLanguageResultExecution timeMemory
144011tincamateiSplit the Attractions (IOI19_split)C++14
29 / 100
923 ms1048580 KiB
#include "split.h" #include <algorithm> #include <cstdio> using namespace std; const int MAX_N = 100000; vector<int> graph[MAX_N]; vector<int> rez; int target[3]; int color[3]; int subarb[MAX_N]; void colorNodes(int col, int nod, int papa) { if(target[color[col]] > 0) { rez[nod] = color[col] + 1; target[color[col]]--; } else rez[nod] = color[2] + 1; for(auto it: graph[nod]) if(it != papa) colorNodes(col, it, nod); } bool dfs(int N, int nod, int papa = -1) { subarb[nod] = 1; for(auto it: graph[nod]) { if(it != papa) { bool rez = dfs(N, it, nod); if(rez == true) return true; subarb[nod] += subarb[it]; if(subarb[it] >= target[color[0]] && N - subarb[it] >= target[color[1]]) { colorNodes(0, it, nod); colorNodes(1, nod, it); return true; } else if(subarb[it] >= target[color[1]] && N - subarb[it] >= target[color[0]]){ colorNodes(1, it, nod); colorNodes(0, nod, it); return true; } } } return false; } bool cmp(int a, int b) { return target[a] < target[b]; } vector<int> subtask3(int N, int a, int b, int c, vector<int> p, vector<int> q) { int M = p.size(); rez = vector<int>(N, 0); for(int i = 0; i < N - 1; ++i) { graph[p[i]].push_back(q[i]); graph[q[i]].push_back(p[i]); } target[0] = a; target[1] = b; target[2] = c; for(int i = 0; i < 3; ++i) color[i] = i; sort(color, color + 3, cmp); dfs(N, 0); return rez; } vector<int> find_split(int N, int a, int b, int c, vector<int> p, vector<int> q) { return subtask3(N, a, b, c, p, q); }

Compilation message (stderr)

split.cpp: In function 'std::vector<int> subtask3(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:58:6: warning: unused variable 'M' [-Wunused-variable]
  int M = p.size();
      ^
#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...