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;
}
posted @ 2022-06-06 20:35  lishangli  阅读(25)  评论(0)    收藏  举报