412. Sislovesme May 2026
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.
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 . 412. Sislovesme
A is an unordered pair i , j ( i ≠ j ) such that If i, j is not mutual, at least
love[1 … N] // 1‑based indexing where love[i] = j means person i loves person j . If love[i] = j but love[j] ≠ i
import sys
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