首页 > 其他分享 >kruskal

kruskal

时间:2022-09-01 15:02:33浏览次数:41  
标签:ll int kruskal edge ff tt

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10, M = 2e5 + 10, INF = 0x3f3f3f3f;
int n, m, f[N];
struct edge{
    int f, t, l;
    edge(){}
    edge(int ff, int tt, int ll)
    {
        f = ff, t = tt, l = ll;
    }
    friend bool operator <(edge a, edge b)
    {
        return a.l < b.l;
    }
}e[M];

int get(int x)
{
    if(x != f[x]) f[x] = get(f[x]);
    return f[x];
}

int kruskal()
{
    int res = 0, cnt = 0;
    sort(e, e + m);

    for(int i = 0; i < m; i ++ )
    {
        int ff = get(e[i].f), tt = get(e[i].t), ll = e[i].l;
        if(ff != tt)
        {
            cnt ++ ;
            res += ll;
            f[ff] = tt;
        }
    }
    if(cnt == n - 1) return res;
    return INF;
}

int main()
{
    cin >> n >> m;
    for(int i = 0; i < m; i ++ )
    {
        int ff, tt, ll;
        cin >> ff >> tt >> ll;
        e[i] = edge(ff, tt, ll);
    }

    for(int i = 1; i <= n; i ++ ) f[i] = i;

    int t = kruskal();

    if(t == INF) puts("impossible");
    else cout <<  t << endl;



    return 0;
}

 

标签:ll,int,kruskal,edge,ff,tt
From: https://www.cnblogs.com/leyuo/p/16646507.html

相关文章

  • Kruskal 重构树
    Kruskal重构树(没有查阅任何资料,没有任何提前准备,想到哪里写到哪里,代码也是现写的)是一棵二叉树,一张\(N\)个点的无向连通图的Kruskal重构树有\(2N-1\)个节点。叶子......
  • Kruskal和Prim算法详解
    最小生成树概念(转载)假设一个国家有一些城市,这些城市可以互相连接起来,假设每两个城市之间的道路有很多条,那么一定存在这样的情况,可以用最少的路程连接各个城市。......
  • 1041 [SCOI2005]繁忙的都市 kruskal 最小生成树
     链接:https://ac.nowcoder.com/acm/contest/26077/1041来源:牛客网题目描述城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决......
  • 最小生成树Kruskal+Prim算法
    最小生成树给定一张边带权的无向图G=(V,E),n=|V|,m=|E|。由V中全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树。边的权值之和最小的生成树被称为无向图G的最......
  • 1036 [SCOI2012]滑雪与时间胶囊 最小生成树 可以用prim做的DAG prim+kruskal不能做DAG
    链接:https://ac.nowcoder.com/acm/contest/26077/1036来源:牛客网题目描述a180285非常喜欢滑雪。他来到一座雪山,这里分布着M条供滑行的轨道和......
  • 「学习笔记」Kruskal 重构树
    前置芝士:最小生成树、Kruskal算法、瓶颈(图上路径最值)正文定义在执行Kruskal算法的过程中我们会从小到大加入若干条边,现在我们仍然按照这个顺序。首先新建\(n\)个......
  • 1009 Forsaken喜欢独一无二的树 删边找唯一kruskal生成树
     链接:https://ac.nowcoder.com/acm/contest/26077/1009来源:牛客网题目描述       众所周知,最小生成树是指使图中所有节点连通且边......