741A. Arpa's loud Owf and Mehrdad's evil plan - Codeforces Solution C++

  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!!