Multiple test cases are given. T // number of test cases (1 ≤ T ≤ 20) N // number of people (1 ≤ N ≤ 10^5) love[1] love[2] … love[N] // N integers, 1 ≤ love[i] ≤ N The sum of N over all test cases does not exceed 10^6 . Output For each test case output a single line containing the number of mutual‑love pairs. Sample Input
If i, j is not mutual, at least one of the equalities love[i]=j or love[j]=i is false. Consider the iteration where i is the smaller index of the two. If love[i] ≠ j → the algorithm’s first condition ( j = love[i] ) fails. If love[i] = j but love[j] ≠ i → the second condition fails. Thus the counter is never increased for this unordered pair. ∎ Theorem After processing a test case, mutualPairs equals the total number of mutual‑love pairs in the group. 412. Sislovesme
From Lemma 1 every increment corresponds to a genuine mutual‑love pair. From Lemma 2 every genuine pair contributes exactly one increment. From Lemma 3 no non‑mutual pair contributes any increment. Therefore the total number of increments equals precisely the number of mutual‑love pairs. ∎ 5️⃣ Complexity analysis Time – The loop visits each of the N people once, performing O(1) work per iteration: O(N) per test case. Multiple test cases are given
love[1 … N] // 1‑based indexing where love[i] = j means person i loves person j . Sample Input If i, j is not mutual,
Because a, b is a mutual‑love pair, we have love[a] = b and love[b] = a . Assume without loss of generality that a < b .