#include <bits/stdc++.h>
#include "split.h"
// #include "grader.cpp"
using namespace std;
const int N = 2e5 + 10;
int n, m, a, b, c;
vector<int> g[N], seen, vis;
void dfs(int v, int target, int day){
seen.push_back(v);
vis[v] = day;
for (int u : g[v]){
if (vis[u])
continue;
if (seen.size() < target)
dfs(u, target, day);
}
}
vector<int> find_split(int nn, int aa, int bb, int cc, vector<int> p, vector<int> q) {
n = nn, a = aa, b = bb, c = cc, m = p.size();
for (int i = 0; i < m; i ++){
g[p[i]].push_back(q[i]);
g[q[i]].push_back(p[i]);
}
vis.resize(n, 0);
int v = 0;
for (int i = 1; i < n; i ++)
if (g[v].size() > g[i].size())
v = i;
dfs(v, a, 1);
bool done = 0;
for (int i = 0; i < n and !done; i ++){
if (vis[i]) continue;
seen.clear();
dfs(i, b, 2);
if (seen.size() == b)
done = 1;
else{
for (int x : seen)
vis[x] = 3;
}
}
for (int i = 0; i < n; i ++)
if (!vis[i])
dfs(i, c, 3);
return vis;
}
# | 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... |