Skip to content

412. Sislovesme «4K — 480p»

Both limits satisfy the given constraints ( ∑ N ≤ 10⁶ ). Below are clean, production‑ready solutions in C++ (17) and Python 3 . Both follow the algorithm described above and use fast I/O to handle the maximum input size. C++ (GNU‑C++17) #include <bits/stdc++.h> using namespace std;

2 4 2 1 4 3 5 2 3 1 5 4

A is an unordered pair i , j ( i ≠ j ) such that 412. Sislovesme

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

(A classic “mutual‑love” counting problem – often seen on SPOJ, LightOJ, and other online judges) 1️⃣ Problem statement You are given a group of N people, numbered from 1 to N . Each person loves exactly one other person (possibly himself). The love‑relationships are described by an array Both limits satisfy the given constraints ( ∑

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 .

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. C++ (GNU‑C++17) #include &lt;bits/stdc++

int main() ios::sync_with_stdio(false); cin.tie(nullptr); int T; if (!(cin >> T)) return 0; while (T--) int N; cin >> N; vector<int> love(N + 1); // 1‑based for (int i = 1; i <= N; ++i) cin >> love[i];

en_USEnglish
412. Sislovesme