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 <bits/stdc++.h>
using namespace std;
const int N = 1e5;
int n,a,b,c;
int mn1 = INT_MAX,mn2 = INT_MAX,id1,id2;
vector<int> adj[N];
vector<int> sq;
int sz[N],sf = -1,ty = -1,pa[N];
void get(int u,int p){ sz[u] = 1; for(int v : adj[u]) if(v!=p) get(v,u),sz[u]+=sz[v]; }
void dfs(int u,int p)
{
pa[u] = p;
sq.push_back(u);
if(sz[u]>=mn1 and n-sz[u]>=mn2) sf = u,ty = 1;
if(sz[u]>=mn2 and n-sz[u]>=mn1) sf = u,ty = 2;
for(int v : adj[u]) if(v!=p) dfs(v,u);
}
void dv(int u,int p)
{
if(u==sf) return;
sq.push_back(u);
for(int v : adj[u]) if(v!=p) dv(v,u);
}
vector<int> find_split(int _n,int _a,int _b,int _c,vector<int> p,vector<int> q)
{
n = _n,a = _a,b = _b,c = _c;
if(a<mn1) mn1 = a,id1 = 1;
if(b<mn1) mn1 = b,id1 = 2;
if(c<mn1) mn1 = c,id1 = 3;
if(a<mn2 and id1!=1) mn2 = a,id2 = 1;
if(b<mn2 and id1!=2) mn2 = b,id2 = 2;
if(c<mn2 and id1!=3) mn2 = c,id2 = 3;
for(int i = 0;i < p.size();i++)
{
int a = p[i],b = q[i];
adj[a].push_back(b),adj[b].push_back(a);
}
get(0,-1);
dfs(0,-1);
vector<int> res(n);
if(sf==-1) return res;
sq.clear();
dfs(sf,pa[sf]);
if(ty==1) for(int i = 0;i < mn1;i++) res[sq[i]] = id1;
else for(int i = 0;i < mn2;i++) res[sq[i]] = id2;
sq.clear();
dv(0,-1);
if(ty==1) for(int i = 0;i < mn2;i++) res[sq[i]] = id2;
else for(int i = 0;i < mn1;i++) res[sq[i]] = id1;
for(int i = 0;i < n;i++) if(!res[i]) res[i] = 6-id1-id2;
return res;
}
Compilation message (stderr)
split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:40:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
40 | for(int i = 0;i < p.size();i++)
| ~~^~~~~~~~~~
# | 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... |