Information Transfer
33. Information Transfer
1. Qustion Link
2. Question ideas
Use the Union-find set to recode the longest ring of the people
3. Question Answer
#include<bits/stdc++.h>
using namespace std;
#define maxn 200010
int n,f[maxn],s[maxn];
inline void init()
{
    for(int i=1;i<=n;i++)
    f[i]=i;
}
int find(int x,int & counts)
{
    counts++;
    return x==f[x]?x:(find(f[x],counts));
}
int main()
{
    int mins = 0x3f3f3f3f;
    cin>>n;
    for(int i=1;i<=n;i++)
    f[i]=i;
    for(int i=1;i<=n;i++)
    {
        int counts=0,fs;
        cin>>fs;
        if(find(fs,counts)==i)
        mins = min(mins,counts);
        else
            f[i]=fs;
    }
    cout<<mins;
    return 0;
}

 
                
             
         浙公网安备 33010602011771号
浙公网安备 33010602011771号