解:
2025-07-06 20:06:09
发布于:浙江
6阅读
0回复
0点赞
dfs部分:
#include<bits/stdc++.h>
using namespace std;
int n,d;
int tmp[1010],ans[1010];
vector<int> v[1010];
void dfs(int node,int lv){
tmp[lv] = node;
if(lv-d>0){
ans[node] = tmp[lv-d];
}else{
ans[node] = -1;
}
for(int i = 0;i<v[node].size();i++){
int y = v[node][i];
dfs(y,lv+1);
}
}
int main(){
cin>>n>>d;
for(int i = 2,x;i<=n;i++){
cin>>x;
v[x].push_back(i);
}
dfs(1,1);
for(int i = 1;i<=n;i++) cout<<ans[i]<<endl;
return 0;
}
这里空空如也
有帮助,赞一个