"""
https://www.lanqiao.cn/problems/182/learning/?page=1&first_category_id=1&problem_id=182
"""
import os
import sys
sys.setrecursionlimit(100000)
def dfs(x, length):
# 记录当前x, 已经走了length步
vis[x] = length
if vis[a[x]]:
# 表示走到了前面走过的点, 也就意味着形成了一个环
global ans
ans = max(ans, length - vis[a[x]] + 1)
else:
dfs(a[x], length + 1)
n = int(input())
# a[i]表示小朋友i最崇拜的小朋友
a = [0] + list(map(int, input().split()))
# vis记录从一个小朋友出发走到其他小朋友所走的步数
vis = [0] * (n + 1)
ans = 0
for i in range(1, n + 1):
if vis[i] == 0:
# 从小朋友出发找最大的环
dfs(i, 1)
print(ans)
蓝桥杯-小朋友崇拜圈
最新推荐文章于 2024-07-18 19:36:20 发布