社区讨论

求助!玄关

P2661[NOIP 2015 提高组] 信息传递参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhjlfme7
此快照首次捕获于
2025/11/04 04:29
4 个月前
此快照最后确认于
2025/11/04 04:29
4 个月前
查看原帖
80P
CPP
#include<bits/stdc++.h>
using namespace std;
int n;
int v;
int t[200005];
bool f[200005];
bool c[200005];
int rd[200005];
long long ans=1145141919810;
long long dfs(int x)
{
    f[x]=1; 
    if(f[t[x]])return 1;
    return dfs(t[x])+1;
}
void del(int x)
{
    rd[t[x]]--;
    c[x]=1;
    if(!rd[t[x]])del(t[x]);
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>t[i];
        rd[t[i]]++;
    }
    for(int i=1;i<=n;i++)
    {
        if(rd[i]==0)del(i);
    }
    for(int i=1;i<=n;i++)
    {
        if(!c[i])
        {
            long long s=dfs(i);
            if(s!=1)ans=min(ans,s);
        }
    }
    cout<<ans;
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...