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"
#ifdef NYAOWO
#include "grader.cpp"
#endif
#include <bits/stdc++.h>
#define For(i, a, b) for(int i = a; i <= b; i++)
#define Forr(i, a, b) for(int i = a; i >= b; i--)
#define F first
#define S second
#define eb emplace_back
#define sz(x) ((int)x.size())
#define all(x) x.begin(), x.end()
// #define int LL
using namespace std;
using LL = long long;
using pii = pair<int, int>;
const int MAXN = 200010;
vector<int> adj[MAXN];
vector<int> ord;
void dfs(int n, int p, int k) {
ord.eb(n);
for(auto &i:adj[n]) if(i != p && i != k) {
dfs(i, n, k);
}
}
vector<int32_t> find_split(int32_t n, int32_t a, int32_t b, int32_t c, vector<int32_t> p, vector<int32_t> q) {
int m = sz(p);
For(i, 0, m - 1) {
int s = p[i];
int t = q[i];
adj[s].eb(t);
adj[t].eb(s);
}
int p0 = -1;
For(i, 0, n - 1) if(sz(adj[i]) == 1) {
p0 = i;
}
if(p0 < 0) p0 = 0;
dfs(p0, p0, p0);
vector<int> res(n);
For(i, 0, n - 1) {
int id = ord[i];
if(i < a) res[id] = 1;
else if(i < a + b) res[id] = 2;
else res[id] = 3;
}
return res;
}
# | 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... |