博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小生成树之Kruskal算法
阅读量:5239 次
发布时间:2019-06-14

本文共 1260 字,大约阅读时间需要 4 分钟。

问题:关键还是定义数据结构问题,还有如何把两个集合合并成一个。

代码:

#include 
#include
using namespace std;#define MAXV 20#define INFINITY 65535typedef struct node{ int from; int to; int weight;}WGraph;typedef struct map{ WGraph arr[MAXV]; int vexs,edges;}*Map;void createGraph(Map &map) //创建图{ int i; cout<<"please input the edges and vexs:"; cin>>map->edges>>map->vexs; for(i=0;i
edges;i++) { cout<<"please input from,to,weight of graph:"; cin>>map->arr[i].from>>map->arr[i].to>>map->arr[i].weight; }}void showGraph(Map wg){ int i; cout<<"the num of edges and vexs:"; cout<
edges<<" "<
vexs<
edges;i++) { cout<<"("<
arr[i].from<<","<
arr[i].to<<" "<
arr[i].weight<<")"<
edges;i++) { set[i]=i; } for(j=0;j
vexs-1;j++) //共有n-1条边 { min=INFINITY; for(k=0;k
edges;k++) //查找最小边 { if(set[map->arr[k].from]!=set[map->arr[k].to]) { if(map->arr[k].weight
arr[k].weight; temp=k; } } } flag=set[map->arr[temp].to]; for(s=0;s
edges;s++) //把两个集合合并成一个集合 { if(set[s]==flag) set[s]=set[map->arr[temp].from]; } cout<<"("<
arr[temp].from<<","<
arr[temp].to<<","<
arr[temp].weight<<")"<

 运行截图:

转载于:https://www.cnblogs.com/xshang/archive/2013/05/15/3080055.html

你可能感兴趣的文章
解决miner.start() 返回null
查看>>
bzoj 2007: [Noi2010]海拔【最小割+dijskstra】
查看>>
BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)
查看>>
C# Dynamic通用反序列化Json类型并遍历属性比较
查看>>
128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
查看>>
定制jackson的自定义序列化(null值的处理)
查看>>
auth模块
查看>>
javascript keycode大全
查看>>
前台freemark获取后台的值
查看>>
log4j.properties的作用
查看>>
游戏偶感
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
SQL查询总结 - wanglei
查看>>