模板题啦。

虽然Prim在解决某些特殊情形时有用,但一般Kruskal就够了。

#include<bits/stdc++.h>
using namespace std;
#define ll long long/* Kruskal begin */const int MAXN=5005;
const int MAXM=200005;
int F[MAXN];struct Edge{int u,v,w;
}edge[MAXM];int tol;void add_edge(int u,int v,int w){edge[tol].u=u;edge[tol].v=v;edge[tol++].w=w;
}bool cmp(Edge a,Edge b){return a.w<b.w;
}int find(int x){if(F[x]==-1)return x;else return F[x]=find(F[x]);
}ll Kruskal(int n){memset(F,-1,sizeof(F));sort(edge,edge+tol,cmp);int cnt=0;int ans=0;for(int i=0;i<tol;i++){int u=edge[i].u;int v=edge[i].v;int w=edge[i].w;int t1=find(u);int t2=find(v);if(t1!=t2){ans+=w;F[t1]=t2;cnt++;}if(cnt==n-1)break;}if(cnt<n-1)return -1e18;return ans;
}/* Kruskal end */int main(){int n,m;while(~scanf("%d%d",&n,&m)){for(int i=0;i<m;i++){int u,v,w;scanf("%d%d%d",&u,&v,&w);add_edge(u,v,w);}ll ans=Kruskal(n);if(ans<=-1e18){printf("orz\n");}else{printf("%lld\n",ans);}}
}

转载于:https://www.cnblogs.com/Yinku/p/10593957.html

模板 - 图论 - 最小生成树相关推荐

  1. 0x62.图论 - 最小生成树

    目录 一.KruskalKruskalKruskal算法 1.P3366 [模板]最小生成树 二.PrimPrimPrim算法 2.P2212 [USACO14MAR]Watering the Fie ...

  2. 最小生成树 洛谷P3366【模板】最小生成树 洛谷P2820 局域网

    嗯... 理解生成树的概念: 在一幅图中将所有n个点连接起来的n-1条边所形成的树. 最小生成树: 边权之和最小的生成树. 最小瓶颈生成树: 对于带权图,最大权值最小的生成树. 如何操作? 1.Pri ...

  3. 图论--最小生成树总结(PrimKruskal)

    今天才写了prim的堆优化,发现kruskal居然比prim跑得快... 回归正题: 以下是我个人对最小生成树各种算法的理解,以及我的代码. 以下我将点数称为n,边数称为m: Prim 算法过程(来自 ...

  4. 牛客刷题之图论-最小生成树

    题目集链接 目录 1.黑暗城堡 2.北极通讯网络 3.新的开始 4.构造完全图 5.秘密的牛奶运输 6.Tree 7.最小生成树计数 8.次小生成树 1.黑暗城堡 先求出最小生成树的每个边权,然后枚举 ...

  5. 模板 - 图论 - 树链剖分

    今天来啃一下这个树剖吧. 模板题是要求这四个问题: 将树从x到y结点最短路径上所有节点的值都加上z 求树从x到y结点最短路径上所有节点的值之和 将以x为根节点的子树内所有节点值都加上z 求以x为根节点 ...

  6. 【模板】 最小生成树

    prim: 给出一个无向图,求出最小生成树,如果该图不连通,则输出impossible. #include<bits/stdc++.h> using namespace std; cons ...

  7. BZOJ 1016 最小生成树计数 【模板】最小生成树计数

    [题解] 对于不同的最小生成树,每种权值的边使用的数量是一定的,每种权值的边的作用是确定的 我们可以先做一遍Kruskal,求出每种权值的边的使用数量num 再对于每种权值的边,2^num搜索出合法使 ...

  8. 洛谷:P3366 【模板】最小生成树(基础总结,图)

    题目: 分析:最小生成树就两种方法. 提醒一个要点,因为是树,所以可能以点计数,也可能以边计数. Kruskal(克鲁斯卡尔)~边: 1.边排序. 2.按顺序加入并判断不能成环,以并查集来判断. 首先 ...

  9. 【模板】最小生成树(求出最小树长即可)

    题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz. 输入格式 第一行包含两个整数 N,MN,M,表示该图共有 NN 个结点和 MM 条无向边. 接下来 MM 行每行包含三 ...

最新文章

  1. 人性漫画:打工与创业的残酷区别……
  2. 生活很急躁,史前也一样
  3. 鸿蒙开发-在JS中获取hml页面中Input输入的值
  4. struts2几种result type探究
  5. 舞动的桥 阿里云首个百万IOPS云盘的背后
  6. 数据库读写分离这个坑,你应该踩过吧?
  7. JavaScript从入门到精通(全)
  8. 每天30分钟学python-每天 3 分钟,小闫带你学 Python(二十三)
  9. 如何选择SAP培训?
  10. 计算机组装中如何看硬件型号,如何查看主板型号?(三种方法!)
  11. RabbitMQ学习
  12. 5.登录注册找回密码
  13. 紧耦合LIO综述 | 6篇顶会论文看透紧耦合LIO玩儿法(LIOM/LIO-SAM)
  14. [css] 积累(old)
  15. leetcode: 70. Climbing Stairs
  16. CATIA Automation 编程初探
  17. UDS汽车诊断入门01 - 简介
  18. bootstrap4.3.1 导航栏鼠标悬停下拉显示
  19. 数学和计算机联系论文,数学与计算机论文
  20. 架设ftp-http-tftp server服务器

热门文章

  1. 微服务化架构演进与人员组织
  2. 数据库 一致性读当前读
  3. 基于虚拟日志压缩的数据同步方案
  4. UNIX高手的20个习惯
  5. 海洋工作室——网站建设专家:全数据库比较工具
  6. 微软推出免费虚拟太空望远镜软件WWT
  7. 《设计模式详解》软件设计原则
  8. 利用jquery的ajax获取后台返回的json数据为空
  9. 巧用FineReport搭建成本管控监测系统
  10. adobe blueprint