zoukankan      html  css  js  c++  java
  • P1525 关押罪犯

    基础并查集--

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    #include<stdio.h>
    using namespace std;
    const int maxx = 200005;
    int n,m;
    int pre[maxx];
    int f[maxx];
    void init()
    {
        for (int i=0; i<=maxx; i++)
        {
            pre[i]=i;
        }
    }
    int findd(int x)
    {
        int r=x;
        while(pre[r]!=r)
            r=pre[r];//找到他的前导结点
        int i=x,j;
        while(i!=r)//路径压缩算法
        {
            j=pre[i];//记录x的前导结点
            pre[i]=r;//将i的前导结点设置为r根节点
            i=j;
        }
        return r;
    }
    void join(int x,int y)
    {
        int fx=findd(x);
        int fy=findd(y);
        if (fx!=fy)
            pre[fx]=fy;
    }
    struct node
    {
        int u,v,w;
    } a[maxx];
    bool cmp(node aa,node bb)
    {
        return aa.w>bb.w;
    }
    int main()
    {
        while(~scanf("%d%d",&n,&m))
        {
            init();
            memset(f,0,sizeof(f));
            int flag=0;
            for (int i=1; i<=m; i++)
            {
                scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w);
            }
            sort(a+1,a+1+m,cmp);
            for (int i=1; i<=m; i++)
            {
                int fax=findd(a[i].u);//
                int fay=findd(a[i].v);
                if (fax==fay)//首先判断是不是一个集合,如果是就立马输出
                {
                    flag=a[i].w;
                    break;
                }
                if (!f[a[i].u])//如果这个点没有敌人
                {
                    f[a[i].u]=a[i].v;//加一个敌人
                }
                else
                {
                    join(f[a[i].u],a[i].v);//如果这个点有敌人把敌人变为自己人
                }
                if (!f[a[i].v])
                {
                    f[a[i].v]=a[i].u;
                }
                else
                {
                    join(f[a[i].v],a[i].u);
                }
    
            }
            printf("%d
    ",flag);
        }
        return 0;
    }
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    React网络请求fetch之get请求
    英语学习
    人物传记
    四月
    启程
    情绪
    办公新址
    孩子大了
    幸福的生日
    hibernate---树状映射
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9684209.html
Copyright © 2011-2022 走看看