这是别人的代码
#include<iostream>
using namespace std;
int zuzong[100005];
int countzu[100005];
int count(int i){
if(countzu[i]==0){
int coun=1;
if(zuzong[i]!=-1){
coun=count(zuzong[i])+1;
} else{
coun=1;
}
countzu[i]=coun;
return coun;
}
else{
return countzu[i];
}
}
int main(){
int n;
cin>>n;
int a;
for(int i=1;i<=n;i++){
cin>>a;
zuzong[i]=a;
}
int max=0;
for(int i=1;i<=n;i++){
countzu[i]=count(i);
if(count(i)>max){
max=count(i);
}
}
cout<<max<<endl;
int flag=1;
for(int i=1;i<=n;i++){
if(countzu[i]==max){
if(flag){
cout<<i;
flag=0;
}else{
cout<<" "<<i;
}
}
}
return 0;
}
我的代码
#include<iostream>
using namespace std;
int zuzong[1024];
int coutzuzong[1024];
int count(int i){
int a=i;
int n=1;
while(zuzong[a]!=-1){
a=zuzong[a];
n++;
}
return n;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
int x;
cin>>x;
zuzong[i]=x;
}
int max=0;
for(int i=1;i<=n;i++){
coutzuzong[i]=count(i);
if(max<coutzuzong[i])
max=coutzuzong[i];
}
cout<<max<<endl;
int flag=1;
for(int i=1;i<=n;i++){
if(coutzuzong[i]==max){
if(flag){
cout<<i;
flag=0;
}else{
cout<<" "<<i;
}
}
}
return 0;
}