dfs and similar math *1600

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
using namespace std;
#define int long long

void solve()
{
    int n;
    cin>>n;
    vector<int> v(n);
    map<int,int>m;
    for(int i=0;i<n;i++){
        cin>>v[i];
        m[v[i]]++;
    }
    if(m.size()!=n){
        cout<<-1;
        return ;
    }
    vector<int> adj[n+1];
    vector<int> vis(n+1,0);
    for(int i=0;i<n;i++){
        adj[i+1].push_back(v[i]);
    }
    vector<int> ans;
    for(int i=0;i<n;i++){
        vis[i+1]=1;
        queue<int> q;
        int cnt=0;
        q.push(i+1);
        while(!q.empty()){
            int node=q.front();
            q.pop();
            cnt++;
            for(auto it: adj[node]){
                if(vis[it]==0){
                    vis[it]=1;
                    q.push(it);
                }
            }
        }
        for(int i=0;i<n;i++){
            vis[i+1]=0;
        }
        if(cnt%2==0){
            ans.push_back(cnt/2);

        }
        else{
            ans.push_back(cnt);
        }
    }
    int lcm=ans[0];
    for(int i=1;i<ans.size();i++){
        int gcdd=__gcd(lcm,ans[i]);
        lcm=(lcm*ans[i])/gcdd;
    }
    cout<<lcm<<endl;


}
int32_t main()
{
    int t = 1;
    // cin>>t;
    while (t--)
    {
        solve();
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

431B - Shower Line
282C - XOR and OR
1582B - Luntik and Subsequences
609A - Флеш-карты
1207A - There Are Two Types Of Burgers
371C - Hamburgers
343B - Alternating Current
758B - Blown Garland
1681B - Card Trick
1592A - Gamer Hemose
493D - Vasya and Chess
1485A - Add and Divide
337B - Routine Problem
1392D - Omkar and Bed Wars
76E - Points
762C - Two strings
802M - April Fools' Problem (easy)
577B - Modulo Sum
1555B - Two Tables
1686A - Everything Everywhere All But One
1469B - Red and Blue
1257B - Magic Stick
18C - Stripe
1203B - Equal Rectangles
1536A - Omkar and Bad Story
1509A - Average Height
1506C - Double-ended Strings
340A - The Wall
377A - Maze
500A - New Year Transportation