Loading...
Submission
# When Author Problem Language CPU Memory
7798 2023-04-12 23:58:03 tafsiruzzaman Squirrel and Relocation C++ 17 19 ms 4500 kb Accepted
Test Cases
# CPU Memory Points
1 3 ms 3308 kb 1 Accepted
2 3 ms 3388 kb 1 Accepted
3 4 ms 3404 kb 1 Accepted
4 6 ms 3412 kb 1 Accepted
5 5 ms 3320 kb 1 Accepted
6 5 ms 3412 kb 1 Accepted
7 3 ms 3332 kb 1 Accepted
8 3 ms 3532 kb 1 Accepted
9 4 ms 3408 kb 1 Accepted
10 4 ms 3340 kb 1 Accepted
11 3 ms 3500 kb 1 Accepted
12 4 ms 3492 kb 1 Accepted
13 4 ms 3536 kb 1 Accepted
14 4 ms 3504 kb 1 Accepted
15 4 ms 3428 kb 1 Accepted
16 4 ms 3464 kb 1 Accepted
17 5 ms 3492 kb 1 Accepted
18 8 ms 3428 kb 1 Accepted
19 9 ms 3460 kb 1 Accepted
20 11 ms 3652 kb 1 Accepted
21 12 ms 3488 kb 1 Accepted
22 13 ms 3928 kb 1 Accepted
23 15 ms 3792 kb 1 Accepted
24 13 ms 3852 kb 1 Accepted
25 19 ms 4188 kb 1 Accepted
26 15 ms 4500 kb 1 Accepted
Source Code
  1. /**
  2.  *
  3.  * @author tafsiruzzaman
  4.  */
  5. #include<bits/stdc++.h>
  6. using namespace std;
  7.  
  8. const long long MOD = 998244353;
  9.  
  10. void test() {
  11. int n;
  12. cin >> n;
  13. vector<int> a(n+1, 0);
  14. vector<int> c(n+1, 0);
  15. vector<int> v;
  16.  
  17. for(int i = 1; i <= n; i++) cin >> a[i];
  18.  
  19. for(int i = 1; i <= n; i++) {
  20. if(!c[i]) {
  21. int cnt = 1, x = a[i];
  22. c[i] = 1;
  23. while(!c[x]) {
  24. c[x] = 1;
  25. x = a[x];
  26. cnt++;
  27. }
  28. v.push_back(cnt);
  29. }
  30. }
  31.  
  32. long long ans = 1;
  33.  
  34. for(int i = 0; i < v.size(); i++) {
  35. ans = (1ll * ans * v[i]) % MOD;
  36. }
  37.  
  38. cout << ans << '\n';
  39. }
  40.  
  41. int main() {
  42. ios_base::sync_with_stdio(false);
  43. cin.tie(NULL);
  44.  
  45. int t = 1; cin >> t;
  46.  
  47. for(int i = 1; i <= t; i++) {
  48. test();
  49. }
  50.  
  51. return 0;
  52. }
  53.