竸プロ精進記 Code festival 2016 B 仲良しうさぎ python 3

問題:https://atcoder.jp/contests/code-festival-2016-quala/tasks/codefestival_2016_qualA_b

お互いを参照し合う関係のリストの要素をピックアップする問題です。要素の数が少ないので素直に全探索していけば時間内に解けます。

コード例

N=int(input())
a=list(map(int,input().split()))
cnt=0
for i in range(N):
    if i+1==a[a[i]-1]:
        cnt+=1
print(cnt//2)

うさぎリスト「a」の中身を一つづつ確認していき、題意の通りの関係、すなわちi+1==a[a[i]-1]を満たす数を数え上げていきます。

ただしこの方法でカウントすると、お互いを参照し合うウサギが1組いた場合、それぞれのウサギを一匹づつカウントしてしまいます。回答で求められるのは「何組」のウサギがいるか?なので、回答するときにはカウントした数を半分にして回答します。