#include "split.h"
#include <bits/stdc++.h>
using namespace std;
#define sig signed
#define int long long
#define arr array
#define vec vector
const int N = 1e5 + 5;
int n, a, b, c;
arr<vec<int>, N> adj;
arr<bool, N> vs;
vec<int> ord;
void dfs(int u) {
vs[u] = true, ord.push_back(u);
for (int v : adj[u])
if (!vs[v]) dfs(v);
}
arr<int, N> ans;
vec<sig> find_split(sig _n, sig _a, sig _b, sig _c, vec<sig> _u, vec<sig> _v) {
n = _n, a = _a, b = _b, c = _c;
for (int i = 0; i < _u.size(); i++) {
int u = _u[i] + 1, v = _v[i] + 1;
adj[u].push_back(v), adj[v].push_back(u);
}
int st = 1;
for (int u = 1; u <= n; u++)
if (adj[u].size() == 1) st = u;
dfs(st);
for (int i = 0; i < ord.size(); i++) {
if (i < a) ans[ord[i]] = 1;
else if (i < a + b) ans[ord[i]] = 2;
else ans[ord[i]] = 3;
}
vec<sig> rsp;
for (int u = 1; u <= n; u++) rsp.push_back(ans[u]);
return rsp;
}
# | 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... |