Submission #986949

#TimeUsernameProblemLanguageResultExecution timeMemory
986949PagodePaivaSplit the Attractions (IOI19_split)C++17
11 / 100
66 ms16592 KiB
#include "split.h" #include <bits/stdc++.h> using namespace std; const int N = 100010; vector <int> g[N]; int pai[N]; int folha; int mark[N]; void dfs(int v, int p){ int con = 0; pai[v] = p; mark[v] = 1; for(auto x : g[v]){ if(x == p) continue; if(mark[x] == 1) continue; con++; dfs(x, v); } if(con == 0) folha = v; } int res[N]; void solve(int v, int &tam){ if(tam == 0) return; tam--; res[v] = 2; mark[v] = 1; for(auto x : g[v]){ if(mark[x]) continue; solve(x, tam); } return; } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { int m = p.size(); for(int i = 0;i < m;i++){ int a = p[i], b = q[i]; a++; b++; g[a].push_back(b); g[b].push_back(a); } dfs(1, 1); memset(mark, 0, sizeof mark); res[folha] = 1; mark[folha] = 1; solve(pai[folha], b); vector <int> ans; for(int i = 1;i <= n;i++){ if(res[i] == 0) res[i] = 3; ans.push_back(res[i]); } 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...