信息传递

Posted 123456

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信息传递相关的知识,希望对你有一定的参考价值。

原先t了很长时间,今天复习了下tarjan,打了一遍,自认为自己的tarjan模板简洁 这道题只有基环树,所以tarjan就可以了

#include<iostream>
#include<stack>
#include<cstdio>
using namespace std;
int n,cnt=-1,ans=1<<29,time;
stack<int>s;
int head[400010],Next[400010],to[400010],dfn[200010],low[200010];
inline int max(int x,int y)
{
    return x>y?x:y;
}
inline int min(int x,int y)
{
    return x<y?x:y;
}
inline void insert(int u,int v)
{
    Next[++cnt]=head[u];
    head[u]=cnt;
    to[cnt]=v;
}
void tarjan(int u)
{
    dfn[u]=low[u]=++time;
    s.push(u);
    for(int i=head[u];i;i=Next[i])
    {
        int v=to[i];
        if(!dfn[v])
        {
            tarjan(v);
        }
        low[u]=min(low[u],low[v]);
    }
    if(dfn[u]==low[u])
    {
        int MAX=0;
        while(s.top()!=u)
        {
            s.pop();
            MAX++;
        }
        MAX++;
        s.pop();
        if(MAX!=1) ans=min(MAX,ans);
    }
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        int u;scanf("%d",&u);
        insert(i,u);
    }
    for(int i=1;i<=n;i++)
    {
        if(!dfn[i]) tarjan(i);
    }
    printf("%d\n",ans);
    return 0;
}

 

以上是关于信息传递的主要内容,如果未能解决你的问题,请参考以下文章

导航项目已选中,传递额外信息

在 NavigationUI 的同一主机活动上传递数据并更新片段文本/按钮

如何使用Android片段管理器传递变量[重复]

将数据从底部工作表对话框片段传递到片段

从另一个活动的活动中的片段传递数据

为啥我的 C 代码片段不起作用?简化版可以。为 unsigned long long 传递不带 VA_ARGS 的 args