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;
#define FAST_IO ios_base::sync_with_stdio(0); cin.tie(nullptr)
#define FOR(i, a, b) for (int i = (a); i <= (b); i++)
#define REP(n) FOR(O, 1, (n))
#define f first
#define s second
#define pb push_back
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<pii> vii;
typedef vector<ll> vl;
const int MAXN = 100100;
vi adj[MAXN];
vi seq;
bool ch[MAXN];
void dfs (int v) {
seq.pb(v);
ch[v] = true;
for (int u : adj[v]) {
if (!ch[u])
dfs(u);
}
}
vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
vector<int> res(n, 0);
int m = (int)p.size();
FOR(i, 0, m-1) {
int u = p[i], v = q[i];
adj[u].pb(v);
adj[v].pb(u);
}
int st = 0;
FOR(i, 0, n-1) if ((int)adj[i].size() == 1) st = i;
dfs (st);
FOR(i, 0, a-1) res[seq[i]] = 1;
FOR(i, a, a+b-1) res[seq[i]] = 2;
FOR(i, a+b, a+b+c-1) res[seq[i]] = 3;
return res;
}
/*
9 10
4 2 3
0 1
0 2
0 3
0 4
0 6
0 8
1 7
3 7
4 5
5 6
ans:
1 1 3 1 2 2 3 1 3
6 5
2 2 2
0 1
0 2
0 3
0 4
0 5
ans:
0 0 0 0 0 0
*/
# | 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... |