Cod sursa(job #733088)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 11 aprilie 2012 14:02:54
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("perm2.in");
ofstream out("perm2.out");

bool folosit[22222];
int p[22222];

inline int cmmmc(int a, int b)
{
    if (a==0)
        return b;
    if (b==0)
        return a;
    int c,a2=a,b2=b;
    while(b)
    {
        c=a%b;
        a=b;
        b=c;
    }
    return a2*b2/a;
}



int main()
{
    int n,i,x,k,rez=0;
    in>>n;
    for(i=1;i<=n;++i)
    {
        in>>p[i];
    }
    for(i=1;i<=n;++i)
    {
        if(folosit[i]==true)
            continue;
        folosit[i]==true;
        x=p[i];
        k=0;
        while(!folosit[x])
        {
            ++k;
            folosit[x]=true;
            x=p[x];
        }
        rez=cmmmc(rez,k);
    }
    out<<rez;
    return 0;
}