数据范围不大,我就直接暴力了(主要是我比较菜)
时间复杂度 O(n^2)
C++ 代码
#include<iostream>
using namespace std;
const int N = 1010;
int f[N];
int cnt,res,n;
void dfs(int x){
if(x==0){
res++;
cnt=0;
return ;
}
if(cnt>=n){
cnt=0;
return ;
}
cnt++;
dfs(f[x]);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) scanf("%d",&f[i]);
for(int i=1;i<=n;i++){
dfs(f[i]);
}
cout<<res<<endl;
return 0;
}