257832026-03-02 18:25:55abcdSzállításcpp17Wrong answer 18/4014ms1732 KiB
#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;
#define pb push_back

const int maxn=20001;
vector<int> radj[maxn];
int adj[maxn],cnt;
bool vis[maxn];

void dfs(int v,int dis,vector<pii>& d){
    d[v]={dis,v};
    for(int u:radj[v])dfs(u,dis+1,d);
}

void up(int v){
    vis[v]=true;
    cnt++;
    if(!vis[adj[v]])up(adj[v]);
}

int main(){
    int n,k;cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>adj[i];
        radj[adj[i]].pb(i);
    }
    vector<pii> d(n+1),c(n+1);
    dfs(1,0,d);
    sort(d.begin(),d.end());
    vis[1]=true;
    for(int i=n;i>0;i--){
        if(!vis[d[i].second]){
            cnt=0;
            up(d[i].second);
            c[i]={cnt,i};
        }
    }
    sort(c.begin(),c.end());
    vector<int> ans;
    int total=0;
    for(int i=n;i>n-k;i--){
        ans.pb(c[i].second);
        total+=c[i].first;
    }
    cout<<total<<'\n';
    for(int x:ans)cout<<x<<' ';cout<<'\n';
}
SubtaskSumTestVerdictTimeMemory
base18/40
1Accepted0/02ms820 KiB
2Wrong answer0/04ms1076 KiB
3Partially correct1/21ms840 KiB
4Partially correct1/22ms1004 KiB
5Partially correct1/22ms820 KiB
6Partially correct1/22ms820 KiB
7Partially correct1/22ms820 KiB
8Partially correct1/23ms820 KiB
9Partially correct1/22ms824 KiB
10Partially correct1/22ms820 KiB
11Partially correct1/23ms1012 KiB
12Partially correct1/24ms820 KiB
13Partially correct1/24ms956 KiB
14Partially correct1/24ms1076 KiB
15Partially correct1/24ms1044 KiB
16Partially correct1/26ms1152 KiB
17Partially correct1/37ms1056 KiB
18Partially correct1/37ms1104 KiB
19Partially correct1/314ms1732 KiB
20Partially correct1/314ms1588 KiB