题目
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int n;
int porter[N];
int ans;
int sign[N];
bool used;
void dfs(int now, int cnt)
{
if(sign[now] && used)
{
ans = max(ans, cnt);
return;
}
if(!sign[now])
{
cnt++, sign[now] = 1;
dfs(porter[now], cnt);
}
if(!used)
{
used = true;
dfs(now-1, cnt);
dfs(now+1, cnt);
used = false;
}
}
int main()
{
cin >> n;
for(int i = 1; i <= n ; i++) cin >> porter[i];
for(int i = 1; i <= n; i++) dfs(i, 0);
cout << ans;
return 0;
}