Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int niza[50001];
- int n;
- int dist[50001];
- bool vis[50001];
- int rec(int at,int curr)
- {
- if(vis[at]==true)
- {
- return max(dist[at],curr+1);
- }
- vis[at]=true;
- return rec(niza[at-1],curr+1);
- }
- int main()
- {
- cin>>n;
- for(int i=0; i<n; i++)
- {
- cin>>niza[i];
- }
- int MAX=0;
- int sum;
- memset(vis,false,sizeof(vis));
- memset(dist,0,sizeof(vis));
- for(int i=0; i<n; i++)
- {
- memset(vis,false,sizeof(vis));
- vis[i]=true;
- sum=0;
- MAX=max(MAX,rec(niza[i],sum));
- }
- cout<<MAX<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement