#21259: Python 解法


jonylu7@gmail.com (呸摟)

學校 : 臺北市立松山高級工農職業學校
編號 : 119847
來源 : [123.193.253.190]
最後登入時間 :
2021-07-31 21:02:33
c291. APCS 2017-0304-2小群體 -- 2017年3月APCS | From: [123.193.248.227] | 發表日期 : 2020-05-08 21:44

用dictionary 阿! 輕輕鬆鬆

 

 

 

t=int(input())
z=list(map(int,input().split()))
a={}
for times,index in enumerate(z):
    a[times]=index
    
ans={}
hadbeen=[False]*t
for k in range(t):
    if hadbeen[k]==True:
        continue
    ori=k
    hadbeen[k]=True
    nxt=a[k]
    ans[ori]=[nxt]
    hadbeen[nxt]=True
    while(ori!=a.get(nxt)):
        ans[ori].append(a.get(nxt))
        nxt=a.get(nxt)
        hadbeen[nxt]=True
    

 

print(len(ans))
 
ZeroJudge Forum