# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
240877 | zoomswk | Split the Attractions (IOI19_split) | C++17 | 2100 ms | 144856 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "split.h"
#include <vector>
#include <algorithm>
using namespace std;
vector<int> way[100005];
int sz[100005];
int dfs(int node){
if(sz[node] > 0) return 0;
sz[node] = 1;
for(int x : way[node]) sz[node] += dfs(x);
return sz[node];
}
int is_in[100005];
vector<int> whats_in;
vector<int> whats_in2;
void go(int node){
is_in[node] = 1;
whats_in.push_back(node);
for(int x : way[node]) if(sz[x] < sz[node]) go(x);
return;
}
void go2(int node){
if(is_in[node]) return;
whats_in2.push_back(node);
for(int x : way[node]) if(sz[x] < sz[node]) go2(x);
return;
}
vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
int m = (int)p.size();
for(int i=0; i<m; i++){
way[p[i]].push_back(q[i]);
way[q[i]].push_back(p[i]);
}
dfs(0);
vector<pair<int, int>> vv = {{a, 1}, {b, 2}, {c, 3}};
sort(vv.begin(), vv.end());
vector<int> res(n, 0);
for(int i=0; i<n; i++){
if(sz[i] >= vv[0].first && n-sz[i] >= vv[1].first){
go(i);
go2(0);
for(int j=0; j<whats_in.size(); j++){
if(j < vv[0].first) res[whats_in[j]] = vv[0].second;
else res[whats_in[j]] = vv[2].second;
}
for(int j=0; j<whats_in2.size(); j++){
if(j < vv[1].first) res[whats_in2[j]] = vv[1].second;
else res[whats_in2[j]] = vv[2].second;
}
return res;
} else if(sz[i] >= vv[1].first && n-sz[i] >= vv[0].first){
go(i);
go2(0);
for(int j=0; j<whats_in.size(); j++){
if(j < vv[1].first) res[whats_in[j]] = vv[1].second;
else res[whats_in[j]] = vv[2].second;
}
for(int j=0; j<whats_in2.size(); j++){
if(j < vv[0].first) res[whats_in2[j]] = vv[0].second;
else res[whats_in2[j]] = vv[2].second;
}
return res;
}
}
return res;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |