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... |