#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 100;
bool sub1 = true, sub2 = true, sub3 = true, sub4 = true;
int n, m, A, B, C, sz[N];
vector < int > ans;
vector < int > gr[N];
vector < pair < int, int > >cl;
vector < int > Subtask1(){
vector < int > ans(n,0);
int fath = -1, start = 0;
for( int i = 0; i < n; i ++ ){
if( gr[i].size() == 1 )start = i;
}
while( A + B + C > 0 ){
if( A > 0 ){
ans[start] = 1;
A--;
}else if( B > 0 ){
ans[start] = 2;
B --;
}else{
ans[start] = 3;
C --;
}
if( gr[start][0] != fath ){
fath = start;
start = gr[start][0];
}else if( gr[start].size() > 1 ){
fath = start;
start = gr[start][1];
}
}return ans;
}
vector < int > Subtask2(){
vector < int > ans(n, 3);
queue < int > q;
q.push(0); ans[0] = 2;B--;
while(!q.empty() && B > 0){
int v = q.front();q.pop();
for( auto to: gr[v] ){
if( B > 0 && ans[to] == 3 ){
q.push(to); ans[to] = 2; B--;
}
}
}for( int i = 0; i < n; i ++ )if( ans[i] == 3 ){ans[i]=1;break;}
return ans;
}
void build( int v, int f ){
sz[v] = 1;
for( auto to: gr[v] ){
if( to != f ){
build(to, v);
sz[v] += sz[to];
}
}
}
void fil( int v, int f, int x ){
if( cl[x].first == 0 ) return;
ans[v] = cl[x].second;
cl[x].first --;
for( auto to: gr[v] ){
if( to != f ) fil(to, v, x);
}
}
bool dfs( int v, int f ){
//cout <<v << ' '<< f << endl;
vector < pair < int, int > >children;
bool t = false;
for( auto to: gr[v] ){
if( to != f && sz[to] >= cl[0].first ){
t = true;
}
}
if( sz[v] < cl[0].first ) t = true;
if( !t ){
fil(v, f, 0);
fil(f, v, 1);
return true;
}
for( auto to: gr[v] ){
if( to != f ){
if( dfs(to,v) ) return true;
}
}
return false;
}
vector < int > Subtask3()
{ cl.push_back({A,1}); cl.push_back({B,2}); cl.push_back({C,3});
sort(cl.begin(), cl.end());
ans.resize(n); build(0, -1);
if( dfs(0,-1) ){
for( int i = 0; i < n; i ++ )if( !ans[i] ) ans[i] = cl[2].second;
}return ans;
}
vector < int > Subtask4(){
return {};
}
vector<int> find_split(int nn, int aa, int bb, int cc, vector<int> pp, vector<int> qq) {
n = nn; m = pp.size(); A = aa; B = bb; C = cc;
if( m >= n )sub3 = false;
if( n > 2500 || m > 5000 ) sub4 = false;
if( A > 1 ) sub2 = false;
for( int i = 0; i < m; i ++ ){
gr[pp[i]].push_back(qq[i]);
gr[qq[i]].push_back(pp[i]);
}
for( int i = 0; i < n; i ++ ){
if( gr[i].size() > 2 )sub1 = false;
}
if( sub1 ){
return Subtask1();
}
if( sub2 ){
return Subtask2();
}
if( sub3 ){
return Subtask3();
}
if( sub4 ){
return Subtask4();
}
return {};
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2688 KB |
ok, correct split |
2 |
Correct |
2 ms |
2688 KB |
ok, correct split |
3 |
Correct |
2 ms |
2688 KB |
ok, correct split |
4 |
Correct |
2 ms |
2688 KB |
ok, correct split |
5 |
Correct |
2 ms |
2688 KB |
ok, correct split |
6 |
Correct |
3 ms |
2688 KB |
ok, correct split |
7 |
Correct |
120 ms |
8952 KB |
ok, correct split |
8 |
Correct |
100 ms |
8956 KB |
ok, correct split |
9 |
Correct |
88 ms |
8824 KB |
ok, correct split |
10 |
Correct |
95 ms |
8824 KB |
ok, correct split |
11 |
Correct |
88 ms |
8824 KB |
ok, correct split |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2688 KB |
ok, correct split |
2 |
Correct |
2 ms |
2816 KB |
ok, correct split |
3 |
Correct |
2 ms |
2688 KB |
ok, correct split |
4 |
Correct |
96 ms |
9976 KB |
ok, correct split |
5 |
Correct |
81 ms |
9080 KB |
ok, correct split |
6 |
Correct |
90 ms |
8952 KB |
ok, correct split |
7 |
Correct |
96 ms |
8908 KB |
ok, correct split |
8 |
Correct |
124 ms |
11260 KB |
ok, correct split |
9 |
Correct |
98 ms |
8824 KB |
ok, correct split |
10 |
Correct |
58 ms |
9200 KB |
ok, correct split |
11 |
Correct |
58 ms |
9076 KB |
ok, correct split |
12 |
Correct |
60 ms |
9592 KB |
ok, correct split |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2688 KB |
ok, correct split |
2 |
Incorrect |
104 ms |
9788 KB |
invalid split: #1=20000, #2=21840, #3=58160 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
2688 KB |
WA in grader: Invalid length of the result. |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2688 KB |
ok, correct split |
2 |
Correct |
2 ms |
2688 KB |
ok, correct split |
3 |
Correct |
2 ms |
2688 KB |
ok, correct split |
4 |
Correct |
2 ms |
2688 KB |
ok, correct split |
5 |
Correct |
2 ms |
2688 KB |
ok, correct split |
6 |
Correct |
3 ms |
2688 KB |
ok, correct split |
7 |
Correct |
120 ms |
8952 KB |
ok, correct split |
8 |
Correct |
100 ms |
8956 KB |
ok, correct split |
9 |
Correct |
88 ms |
8824 KB |
ok, correct split |
10 |
Correct |
95 ms |
8824 KB |
ok, correct split |
11 |
Correct |
88 ms |
8824 KB |
ok, correct split |
12 |
Correct |
2 ms |
2688 KB |
ok, correct split |
13 |
Correct |
2 ms |
2816 KB |
ok, correct split |
14 |
Correct |
2 ms |
2688 KB |
ok, correct split |
15 |
Correct |
96 ms |
9976 KB |
ok, correct split |
16 |
Correct |
81 ms |
9080 KB |
ok, correct split |
17 |
Correct |
90 ms |
8952 KB |
ok, correct split |
18 |
Correct |
96 ms |
8908 KB |
ok, correct split |
19 |
Correct |
124 ms |
11260 KB |
ok, correct split |
20 |
Correct |
98 ms |
8824 KB |
ok, correct split |
21 |
Correct |
58 ms |
9200 KB |
ok, correct split |
22 |
Correct |
58 ms |
9076 KB |
ok, correct split |
23 |
Correct |
60 ms |
9592 KB |
ok, correct split |
24 |
Correct |
2 ms |
2688 KB |
ok, correct split |
25 |
Incorrect |
104 ms |
9788 KB |
invalid split: #1=20000, #2=21840, #3=58160 |
26 |
Halted |
0 ms |
0 KB |
- |