➤ Problem Link : 741A. Arpa's loud Owf and Mehrdad's evil plan
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int arr[101]; bool visited[101]; int sz; int lcm(int x, int y) { return (x*y)/__gcd(x,y); } void dfs(int v) { sz++; if(arr[v]==v) { return; } if(!visited[arr[v]]) { visited[arr[v]]=1; dfs(arr[v]); } } int main() { int n; cin>>n; int in[101]={0}; memset(visited,0,sizeof(visited)); bool flag=1; for(int i=1;i<=n;i++) { cin>>arr[i]; in[arr[i]]++; } for(int i=1;i<=n;i++) if(in[i]!=1) { flag=0; break; } int ans=-1; if(!flag) cout<<"-1"; else { for(int i=1;i<=n;i++) { if(!visited[i]) { visited[i]=1; sz=0; dfs(i); if(sz%2==0) sz/=2; if(ans==-1) ans=sz; else ans=lcm(ans,sz); } } cout<<ans; } }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!