题目描述
解题思路
每次循环就依次遍历找下一个崇拜者,看看能不能成环,但是有两个例子一直超时,官网上大家提交的题解是不超时,但是过不了题给的示例只能说这道题有点问题就这样了把
代码
n=int(input())
data=list(map(int,input().strip().split()))
circle=0
for i in range(n):
now_judge = [True for _ in range(n)]
#如果崇拜自己则可以直接退出循环,进行下一轮
if data[i]==i+1:
continue
#j记录下一个崇拜的小朋友的数组下标
now_judge[i]=False
j=data[i]-1
#cnt用来记录当前的圈子有多大,目前初始值为2
cnt=2
#不找回自己,则一直循环遍历下去
while data[j]!=i+1:
#judge[j]=False
now_judge[j]=False
#更新j为下一个崇拜小朋友的数组小标
j=data[j]-1
#圈子加一
cnt+=1
#如果是被探索过的路径,则break
if now_judge[j]==False:
break
#如果找回自己,既成圈,而且比记录最大的圈值大则更新最大值
if data[j]==i+1 and cnt>circle:
circle=cnt
print(circle)