Submission #11169768
Source Code Expand
#include<iostream>
#include<string>
#include<cstdio>
#include<vector>
#include<cmath>
#include<algorithm>
#include<functional>
#include<iomanip>
#include<queue>
#include<ciso646>
#include<random>
#include<map>
#include<set>
#include<complex>
#include<bitset>
#include<stack>
#include<unordered_map>
#include<utility>
#include<tuple>
using namespace std;
typedef long long ll;
typedef unsigned int ui;
const ll mod = 1000000007;
const ll INF = (ll)1000000007 * 1000000007;
typedef pair<int, int> P;
#define stop char nyaa;cin>>nyaa;
#define rep(i,n) for(int i=0;i<n;i++)
#define per(i,n) for(int i=n-1;i>=0;i--)
#define Rep(i,sta,n) for(int i=sta;i<n;i++)
#define Per(i,sta,n) for(int i=n-1;i>=sta;i--)
#define rep1(i,n) for(int i=1;i<=n;i++)
#define per1(i,n) for(int i=n;i>=1;i--)
#define Rep1(i,sta,n) for(int i=sta;i<=n;i++)
typedef long double ld;
const ld eps = 1e-8;
const ld pi = acos(-1.0);
typedef pair<ll, ll> LP;
int n,m,k,root;
vector<vector<int>> G;
vector<int> d_;
bool used[310];
void dfs(int s,vector<vector<int>> &G_dfs,vector<int> &d_dfs,int l){
//cout << s << endl;
d_dfs[s]=l;
for(int t:G_dfs[s]){
//cout << t << endl;
dfs(t,G_dfs,d_dfs,d_dfs[s]+1);
}
}
bool hantei(int i,int j,int u){
if(used[j]) return false;
int l=k-(u+1+d_[j])-(m-i-1);
//cout << l << endl;
if(j==root){
return (i==m-1 && l==0);
}
if(i==m-1){
return l==0;
}
vector<vector<int>> G_(n);
rep(i,n){
for(int s:G[i]){
if(s==j) continue;
G_[i].push_back(s);
}
}
vector<int> d(n,-1);
dfs(root,G_,d,0);
int S=0;vector<int> D;
rep(i,n){
//cout << d[i] << " ";
if(d[i]!=-1){
S+=1;
D.push_back(d[i]);
}
}
//cout << "" << endl;
//cout << S << endl;
sort(D.begin(),D.end());
int d_sta=0,d_end=0;
if(S<m-i-1){
return false;
}
rep(p,m-i-1){
d_sta+=D[p];
d_end+=D[S-p-1];
}
//cout << d_sta << " " << d_end << endl;;
if(d_sta<=l && l<=d_end){
G=G_;
rep(i,n){
used[i]=(d[i]==-1);
}
return true;
};
return false;
}
void solve(){
cin >> n >> m >> k;
G.resize(n);
rep(i,n){
int p;cin >> p;p--;
if(p==-1)root=i;
G[p].push_back(i);
}
d_.resize(n,-1);
dfs(root,G,d_,0);
int l=0;
vector<int> ans;
rep(i,m){
rep(j,n){
//cout << i << " " << j << " " << l << endl;
bool f=hantei(i,j,l);
if(f){
l+=1+d_[j];
ans.push_back(j+1);
break;
}
if(j==n-1){
cout << -1 << endl;
return;
}
}
}
rep(i,m){
cout << ans[i] << " ";
}
cout << "" << endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout << fixed << setprecision(50);
solve();
}
Submission Info
Submission Time |
|
Task |
F - Coins on the tree |
User |
Chanyuh |
Language |
C++14 (GCC 5.4.1) |
Score |
400 |
Code Size |
2840 Byte |
Status |
AC |
Exec Time |
214 ms |
Memory |
256 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
400 / 400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
s1.txt, s2.txt |
All |
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, s1.txt, s2.txt |
Case Name |
Status |
Exec Time |
Memory |
01.txt |
AC |
2 ms |
256 KB |
02.txt |
AC |
1 ms |
256 KB |
03.txt |
AC |
1 ms |
256 KB |
04.txt |
AC |
2 ms |
256 KB |
05.txt |
AC |
1 ms |
256 KB |
06.txt |
AC |
16 ms |
256 KB |
07.txt |
AC |
8 ms |
256 KB |
08.txt |
AC |
4 ms |
256 KB |
09.txt |
AC |
17 ms |
256 KB |
10.txt |
AC |
148 ms |
256 KB |
11.txt |
AC |
41 ms |
256 KB |
12.txt |
AC |
110 ms |
256 KB |
13.txt |
AC |
174 ms |
256 KB |
14.txt |
AC |
119 ms |
256 KB |
15.txt |
AC |
54 ms |
256 KB |
16.txt |
AC |
151 ms |
256 KB |
17.txt |
AC |
26 ms |
256 KB |
18.txt |
AC |
151 ms |
256 KB |
19.txt |
AC |
80 ms |
256 KB |
20.txt |
AC |
101 ms |
256 KB |
21.txt |
AC |
48 ms |
256 KB |
22.txt |
AC |
154 ms |
256 KB |
23.txt |
AC |
136 ms |
256 KB |
24.txt |
AC |
99 ms |
256 KB |
25.txt |
AC |
140 ms |
256 KB |
26.txt |
AC |
166 ms |
256 KB |
27.txt |
AC |
173 ms |
256 KB |
28.txt |
AC |
148 ms |
256 KB |
29.txt |
AC |
214 ms |
256 KB |
30.txt |
AC |
138 ms |
256 KB |
31.txt |
AC |
3 ms |
256 KB |
32.txt |
AC |
1 ms |
256 KB |
33.txt |
AC |
2 ms |
256 KB |
34.txt |
AC |
1 ms |
256 KB |
35.txt |
AC |
7 ms |
256 KB |
36.txt |
AC |
6 ms |
256 KB |
37.txt |
AC |
1 ms |
256 KB |
38.txt |
AC |
1 ms |
256 KB |
39.txt |
AC |
1 ms |
256 KB |
40.txt |
AC |
2 ms |
256 KB |
s1.txt |
AC |
1 ms |
256 KB |
s2.txt |
AC |
1 ms |
256 KB |