最小生成树——克鲁斯卡尔
来源:互联网 发布:淘宝上的凯威淘淘通讯 编辑:程序博客网 时间:2024/06/05 06:19
克鲁斯卡尔
克鲁斯卡尔算法是实现图的最小生成树的最常用的算法,适合于求边稀疏的网。
基本思想:
设有一个有n个顶点的联通网N=(V,E),首先构造一个没有边的非联通图T=(V,E),图中每个顶点自成一个联通分量。当在E中选到具有一条最小权值的边时,若该边的两个顶点落在不同的联通分量上,则将此边加入到T中;否则将此边舍弃,重新选择一条权值最小的边,重复此过程,直到所有顶点都包含进T中。
算法描述:
代码实现:
题目:
题目描述
给出一个带权无向图,求出其最小生成树。保证图连通。
输入
对于每组数据:
第一行输入n,m。表示此图有n(n <= 50000)个点,m(m <= 200000)条边。
接下来m行,每行u,v,w。表示u,v之间有一条权值为w的边。
第一行输入n,m。表示此图有n(n <= 50000)个点,m(m <= 200000)条边。
接下来m行,每行u,v,w。表示u,v之间有一条权值为w的边。
输出
对于每组数据,输出一个整数代表对应的最小生成树的权值和。
示例输入
3 51 2 11 3 22 3 42 3 51 3 1
示例输出
2
提示
代码:
#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;struct node{ int qd;//记录每条边的起点 int zd;//记录每条边的终点 int quan;//记录权值};struct node sz[200000];int cmp(struct node i,struct node j)//按权值的从小到大排序{ return i.quan < j.quan;}int main(){ int n,m,i,j,k,mi,num; int x[50000]; while(~scanf("%d%d",&n,&m)) { for(i = 1;i <= n;i++)//辅助数组的初始化,即每个点自成一边 { x[i] = i; } for(i = 0;i < m;i++) { scanf("%d%d%d",&sz[i].qd,&sz[i].zd,&sz[i].quan); } sort(sz,sz+m,cmp); mi = num = 0; for(i = 0;i < m && num < n-1;i++) { for(k = sz[i].qd;x[k] != k;k = x[k])//查看起点是否已经存在于联通图 { x[k] = x[x[k]]; } for(j = sz[i].zd;x[j] != j;j = x[j])//查看终点是否已经存在于联通图 { x[j] = x[x[j]]; } if(k != j)//若不存在,加进去这条边 { x[j] = k; mi += sz[i].quan; num++; } } printf("%d\n",mi); } return 0;}
0 0
- 最小生成树——克鲁斯卡尔
- Swordfish (最小生成树——克鲁斯卡尔方法)
- 最小生成树—克鲁斯卡尔算法
- 最小生成树算法—Prim和克鲁斯卡尔
- 最小生成树 克鲁斯卡尔算法
- 最小生成树(克鲁斯卡尔方法)
- 最小生成树--克鲁斯卡尔算法
- 克鲁斯卡尔-最小生成树
- 克鲁斯卡尔求最小生成树
- 克鲁斯卡尔[最小生成树集锦]
- 克鲁斯卡尔最小生成树算法
- 最小生成树(克鲁斯卡尔算法)
- 最小生成树--克鲁斯卡尔算法
- 最小生成树---克鲁斯卡尔算法
- 最小生成树——— 克鲁斯卡尔 hdu 1162 Eddy's picture
- 数据结构——图—最小生成树(普里姆算法和克鲁斯卡尔算法)
- 寻找最小生成树——克鲁斯卡尔(Kruskal)算法
- 最小生成树——prim 普里姆算法 Kruskal 克鲁斯卡尔算法
- 在 MATLAB 2012a 上配置 MATLAB Distributed Computing Server过程详解
- FlatBuffers要点
- 第06章 JSP Ajax常用技巧
- hdu1671 字典树记录前缀出现次数
- 第07章 Ajax框架
- 最小生成树——克鲁斯卡尔
- 人类记忆模式的不可靠性--《潜意识-控制你行为的秘密》
- 用apt+synaptic 在线安装或升级Fedora core 4.0 软件包
- 第08章 投票管理系统
- java反射机制
- Android文字测量与绘制Tips
- Fedora/Redhat 在线安装更新软件包,yum 篇
- jbpm eclipse 安装
- 用程序求倒数