打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
洛谷p2661信息传递 题解
#include<cstdio>
#include<iostream>
using namespace std;
int f[200002],d[200002],n,minn,last;    d数组用来计数
int fa(int x)
{//升级版找爹函数
    if (f[x]!=x)                    
    {
        int last=f[x];                 
        f[x]=fa(f[x]);                  
        d[x]+=d[last];//计数                  
    }
    return f[x];
}
void Violentsearch(int a,int b)//升级版合并函数
{
    int x=fa(a),y=fa(b);                
    if (x!=y) {f[x]=y; d[a]=d[b]+1;}    
    else minn=min(minn,d[a]+d[b]+1);    
    return;
}
int main()
{
    int i,t;
    cin>>n;
    for (i=1;i<=n;i++) f[i]=i;          
    minn=2147483647;
    for (i=1;i<=n;i++)
    {
        cin>>t;
        Violentsearch(i,t);                    
    }
    cout<<minn;
    return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
汇思学 18国庆 图论
算法分析第一次作业
最大连续区间和的算法总结
【洛谷日报#146】浅谈ST表
Codeforces 1263E - Editor (前缀和、数据结构)
C语言结构体的“继承”
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服