Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;int a[100005];int vis[100005];int main(){int n;cin >> n;memset(vis,0,sizeof(vis));for(int i = 1; i <= n; i++)cin >> a[i];queue<int>q;int ans = 0,cnt=0;for(int i = 1; i <= n; i++){if(vis[i]) continue;while(!q.empty()) q.pop();cnt = 0;q.push(a[i]);while(!q.empty()){int s = q.front(); q.pop();if(vis[s])break;vis[s]=1;cnt++;q.push(a[s]);}ans = max(cnt,ans);}