#include "iostream"
#include "cstring"
#include "algorithm"
using namespace std;
int table[100005]; // 初始数据,是树。
int ceng[100005]; // 层数
int solve(int val){
// 返回层数
if(val == -1) return ceng[val] = 0; // 如果未计算过,计算之
if(ceng[val] != -1) return ceng[val];
else return ceng[val] =(solve(table[val]) + 1);
}
int main(){
memset(ceng, -1, 100005 * 4);
memset(table, -1, 100005 * 4);
int n;
cin >> n;
for(int i = 1; i <= n; ++i)
cin >> table[i];
int val = -1;
for(int i = 1; i <= n; ++i)
val = max(solve(i), val);
cout << val << endl;
for(int i = 1, count = 0; i <= n; ++i){
if(ceng[i] == val) {
if(count ++) cout << " ";
cout << i;
}
}
}
L2-026 小字辈 (25 分)
猜你喜欢
转载自blog.csdn.net/qq_33987764/article/details/113760527
今日推荐
周排行