首页 > 其他分享 >859 Kruskal求最小生成树

859 Kruskal求最小生成树

时间:2022-10-25 13:22:59浏览次数:48  
标签:cnt return int Kruskal 859 最小 edges const find

把所有边按照权重值从小到大排序,然后一一收入集合,利用联通集判断一条边的两个点是否在一个联通集中 如果在就不收录这条边

#include<bits/stdc++.h>
using namespace std;

const int N = 100010, M = 200010;
int n, m;
int P[N];
struct edge{
    int a, b, w;
    bool operator< (edge &e) const{
        return w < e.w;
    }
}edges[M];

int find(int x) {
    if (P[x] != x) P[x] = find(P[x]);
    return P[x];
}

int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) P[i] = i;
    for (int i = 0; i < m; i++) {
        int a, b, w;
        cin >> a >> b >> w;
        edges[i] = {a, b, w};
    }
    sort(edges, edges + m);
    
    int res = 0, cnt = 1;
    for (int i = 0; i < m; i++) {
        int a = edges[i].a, b = edges[i].b, w = edges[i].w;
        a = find(a), b = find(b);
        if (a == b) continue;
        else {
            res += w;
            P[a] = b;
            cnt ++;
        }
    }
    if (cnt < n) puts("impossible");
    else cout << res;
    return 0;
}

标签:cnt,return,int,Kruskal,859,最小,edges,const,find
From: https://www.cnblogs.com/echoT/p/16824547.html

相关文章

  • POJ 2110(最小生成树)
    这题的思路就是找一个范围,看看这个范围是否可行主流是二分Ans,我是先把点排序,求最小生成树检查首位的ProgramP2110;typeed=recordu,v,w:longint;end;vara......
  • 调色盘 (3维k点最小最远点对-容斥原理)
    调色盘(pastele)题目描述Albus得到了一份礼物:来自Polaris的水彩油墨包。Polaris的油墨包里面有N个颜色,现在Albus打算选其中的K种来作一幅风景画。既然是风景画,颜色就不能太......
  • BZOJ 1185([HNOI2007]最小矩形覆盖-旋转卡壳+点集几何意义)
    1185:[HNOI2007]最小矩形覆盖TimeLimit: 10Sec  MemoryLimit: 162MBSec  SpecialJudgeSubmit: 258  Solved: 137Description l要事先改成......
  • 最小斯坦纳树
    最小斯坦纳树斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种。最小生成树是在给定的点集和边中寻求最短网络使所有点连通。而最小斯坦纳树允许在给定点......
  • 858 Prim算法求最小生成树
    #include<bits/stdc++.h>usingnamespacestd;constintN=510,INF=0x3f3f3f3f;intn,m;intg[N][N];//储存边intdist[N];//储存点到集合的距离intst[N......
  • BZOJ 4519([Cqoi2016]不同的最小割-Gusfield算法)
    题意:给一幅图,问2点之间最小割有几个不同取值。1<=N<=8501<=M<=8500Gusfield算法如下:假设一开始所有点均在同一集合任意选定2个不在同一集合点求最小割,割把点集分成......
  • BZOJ 1797([Ahoi2009]Mincut 最小割-最小割的可行边与必行边)
    DescriptionA,B两个国家正在交战,其中A国的物资运输网中有N个中转站,M条单向道路。设其中第i(1≤i≤M)条道路连接了vi,ui两个中转站,那么中转站vi可以通过该道路到达ui中转站,......
  • 多个日期,找最大最小日期
    //最大最小日期privatestaticStringshowMaxDate(String[]dateArray){Map<String,Integer>dateMap=newTreeMap<String,Integer>();......
  • 最小化及关闭远程桌面后键盘与鼠标仍处于可交互状态
    默认情况下,当用户没有在Windows上执行任何输入(没有鼠标键盘等的输入)并保持一定时间后,Windows会自动切换到锁屏模式(或屏保模式),甚至待机。一般情况下,这样不会有任......
  • 0308 寻找文件夹中的最大和最小文件
    packageIO流;importjava.io.File;importjava.util.Date;importjava.io.FileInputStream;importjava.io.FileNotFoundException;/***@authorshawnwen*@version创......