| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 152070 | oolimry | Split the Attractions (IOI19_split) | C++14 | 122 ms | 14356 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 <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef pair<int,int> ii;
vi adj[100005];
int dp[100005];
bool vis[100005];
void dfs(int u){
vis[u] = true;
for(int i = 0;i < adj[u].size();i++){
int v = adj[u][i];
if(!vis[v]){
dfs(v);
dp[u] += dp[v];
}
}
dp[u] += 1;
}
vi find_split(int n, int aaa, int bbb, int ccc, vi p, vi q) {
for(int i = 0;i < p.size();i++){
int x = p[i];
int y = q[i];
adj[x].push_back(y);
adj[y].push_back(x);
}
dfs(0);
vector<pair<int,int> > vv;
vv.push_back(ii(aaa,1));
vv.push_back(ii(bbb,2));
vv.push_back(ii(ccc,3));
sort(vv.begin(),vv.end());
int a = vv[0].first;
int b = vv[1].first;
for(int i = 0;i < p.size();i++){
int x = p[i];
int y = q[i];
int ll = min(dp[x],dp[y]);
int rr = dp[0] - ll;
int l = min(ll,rr);
int r = max(ll,rr);
if(l >= a && r >= b){
queue<int> bfs;
vi vis;
for(int i = 0;i < n;i++) vis.push_back(vv[2].second);
//vis[x] = vv[0].second;
//vis[y] = vv[1].second;
bfs.push(x);
int cnt = a;
while(!bfs.empty()){
int u = bfs.front();
bfs.pop();
if(vis[u] != vv[2].second) continue;
vis[u] = vv[0].second;
cnt--;
if(cnt == 0) break;
for(int j = 0;j < adj[u].size();j++){
int v = adj[u][j];
if(v == x || v == y) continue;
bfs.push(v);
}
}
while(!bfs.empty()) bfs.pop();
bfs.push(y);
cnt = b;
while(!bfs.empty()){
int u = bfs.front();
bfs.pop();
if(vis[u] != vv[2].second) continue;
vis[u] = vv[1].second;
cnt--;
if(cnt == 0) break;
for(int j = 0;j < adj[u].size();j++){
int v = adj[u][j];
if(v == x || v == y) continue;
bfs.push(v);
}
}
return vis;
}
}
vi none;
for(int i = 0;i < n;i++) none.push_back(0);
return none;
}
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... | ||||
