投递华为等公司10个岗位 >
0 点赞 评论 收藏
分享
丿於豪:我只做出来了第一道和第三道,我把第三道贴出来吧
思路就是:生成一个最小生成树,找出最深的节点。从根到最深都是花费1,其他的节点都是一步花费2。
#include<bits/stdc++.h>
using namespace std;
int a[1001] = {0};
int main(){
memset(a, -1, 1000);
int n, k;
cin >> n >> k;
int tmp;
for(int i = 0; i < n-1;i++){
cin >> tmp;
if(tmp > i+1){
a[tmp] = i+1;
}else{
a[i+1] = tmp;
}
}
int b[1001] = {0};
for(int i = n-1; i >= 0 ;i--){
b[a[i]] = b[a[i]] > (b[i]+1) ? b[a[i]] : (b[i]+1);
}
for(int i = 0; i < n ;i++){
cout << b[i] << " ";
}
if(k <= b[0]){
cout << b[0] + 1;
}else{
cout << (k - b[0])/2 + b[0] + 1;
}
return 0;
}
投递网易等公司10个岗位 >
0 点赞 评论 收藏
分享
投递商汤科技等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了: