笔记——最小生成树
来源:互联网 发布:厦门软件企业协会 编辑:程序博客网 时间:2024/06/16 17:24
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAXN 50000//最大顶点数
#define MAXM 100000//最大边数
struct node
{
int u,v,w;//无向图的两个节点u,v,和权值w
};
node G[MAXM];
int n,m;
int rt[MAXN];//节点所属
void init()//初始化节点
{
for(int i=0;i<n;i++)
{
rt[i]=i;//初始节点都属于自己
}
}
int find(int x)//查找节点所属
{
if(x!=rt[x])
{
rt[x]=find(rt[x]);//将节点直接引向所属节点,不用一步步寻找,加快速度
}
return rt[x];
}
bool cmp(node a,node b)//按权重排序
{
return a.w<b.w;
}
int Kruskal()//最小生成树算法
{
int sum=0;
for(int i=0;i<m;i++)
{
int a=find(G[i].u);
int b=find(G[i].v);
if(a!=b)//两个节点所属不一样,可以连接(一样如果连接会形成环)
{
rt[a]=b;//将两个节点所属相连
sum+=G[i].w;
}
}
return sum;
}
int main()
{
while(~scanf("%d %d",&n,&m))
{
init();
for(int i=0;i<m;i++)
{
scanf("%d %d %d",&G[i].u,&G[i].v,&G[i].w);
}
sort(G,G+m,cmp);
printf("%d\n",Kruskal());
}
return 0;
}
#include <algorithm>
using namespace std;
#define MAXN 50000//最大顶点数
#define MAXM 100000//最大边数
struct node
{
int u,v,w;//无向图的两个节点u,v,和权值w
};
node G[MAXM];
int n,m;
int rt[MAXN];//节点所属
void init()//初始化节点
{
for(int i=0;i<n;i++)
{
rt[i]=i;//初始节点都属于自己
}
}
int find(int x)//查找节点所属
{
if(x!=rt[x])
{
rt[x]=find(rt[x]);//将节点直接引向所属节点,不用一步步寻找,加快速度
}
return rt[x];
}
bool cmp(node a,node b)//按权重排序
{
return a.w<b.w;
}
int Kruskal()//最小生成树算法
{
int sum=0;
for(int i=0;i<m;i++)
{
int a=find(G[i].u);
int b=find(G[i].v);
if(a!=b)//两个节点所属不一样,可以连接(一样如果连接会形成环)
{
rt[a]=b;//将两个节点所属相连
sum+=G[i].w;
}
}
return sum;
}
int main()
{
while(~scanf("%d %d",&n,&m))
{
init();
for(int i=0;i<m;i++)
{
scanf("%d %d %d",&G[i].u,&G[i].v,&G[i].w);
}
sort(G,G+m,cmp);
printf("%d\n",Kruskal());
}
return 0;
}
阅读全文
0 0
- 笔记——最小生成树
- 最小生成树笔记
- 笔记:最小生成树——Kruskal算法
- 【算法笔记】最小生成树
- 最小/最大生成树笔记
- [笔记]: 最小生成树Kruska
- Prim — 最小生成树
- 算法导论学习笔记(17)——最小生成树
- 0025算法笔记——【贪心算法】最小生成树问题
- 0025算法笔记——【贪心算法】最小生成树问题
- 最小生成树———灌溉
- 【算法导论笔记】最小生成树
- prim 算法笔记 最小生成树
- 图的最小生成树学习笔记
- 算法导论笔记:23最小生成树
- 最小生成树笔记--《算法导论》
- 最小生成树的Prim算法笔记
- 最小生成树——prim
- Shell文本处理三剑客之grep
- poj 3648 Wedding(2-sat 求解)
- (HDU
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 解析(六)之删除SQL
- html+js 瀑布流布局
- 笔记——最小生成树
- L-BFGS
- 类和对象练习题一(17/09/24)
- merge-sorted-array
- java 页面url传值中文乱码的解决方法。
- LeetCode:48. Rotate Image
- 【牛客 题库】 代码生成阶段的主要任务|| short范围
- 定宽+流动布局
- 单列模式-饿汉式