38 lines
819 B
Python
38 lines
819 B
Python
import sys
|
|
sys.setrecursionlimit(10**6)
|
|
input = sys.stdin.readline
|
|
|
|
ans = []
|
|
|
|
for t in range(int(input())) :
|
|
n, selet = int(input()), [0] + list(map(int, input().split()))
|
|
|
|
visited = [False] * (n+1)
|
|
finished = [False] * (n+1)
|
|
ans.append(n)
|
|
|
|
def dfs(now) :
|
|
visited[now] = True
|
|
next = selet[now]
|
|
|
|
if not visited[next] :
|
|
dfs(next)
|
|
|
|
else :
|
|
if not finished[next] :
|
|
temp = next
|
|
|
|
while temp != now :
|
|
ans[t] -= 1
|
|
temp = selet[temp]
|
|
|
|
ans[t] -= 1
|
|
|
|
finished[now] = True
|
|
|
|
for i in range(1, n+1) :
|
|
if not visited[i] :
|
|
dfs(i)
|
|
|
|
print('\n'.join(list(map(str, ans))))
|
|
|