博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kruskal算法的C语言程序
阅读量:5835 次
发布时间:2019-06-18

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

Kruskal是有关图的最小生成树的算法。Kruskal算法是两个经典的最小生成树算法之一,另外一个是Prim算法

程序来源:。

百度百科:。

维基百科:。

程序(去除了原文中非标准的C语言代码):

#include
#include
int i,j,k,a,b,u,v,n,ne=1;int min,mincost=0,cost[9][9],parent[9];int find(int);int uni(int,int);int main(){ printf("\n\tImplementation of Kruskal's algorithm\n"); printf("\nEnter the no. of vertices:"); scanf("%d",&n); printf("\nEnter the cost adjacency matrix:\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%d",&cost[i][j]); if(cost[i][j]==0) cost[i][j]=999; } } printf("The edges of Minimum Cost Spanning Tree are\n"); while(ne < n) { for(i=1,min=999;i<=n;i++) { for(j=1;j <= n;j++) { if(cost[i][j] < min) { min=cost[i][j]; a=u=i; b=v=j; } } } u=find(u); v=find(v); if(uni(u,v)) { printf("%d edge (%d,%d) =%d\n",ne++,a,b,min); mincost +=min; } cost[a][b]=cost[b][a]=999; } printf("\n\tMinimum cost = %d\n",mincost);}int find(int i){ while(parent[i]) i=parent[i]; return i;}int uni(int i,int j){ if(i!=j) { parent[j]=i; return 1; } return 0;}
运行结果:

Implementation of Kruskal's algorithmEnter the no. of vertices:6Enter the cost adjacency matrix:0 3 1 6 0 03 0 5 0 3 01 5 0 5 6 46 0 5 0 0 20 3 6 0 0 60 0 4 2 6 0The edges of Minimum Cost Spanning Tree are1 edge (1,3) =12 edge (4,6) =23 edge (1,2) =34 edge (2,5) =35 edge (3,6) =4	Minimum cost = 13

转载于:https://www.cnblogs.com/tigerisland/p/7564175.html

你可能感兴趣的文章
用WINSOCK API实现同步非阻塞方式的网络通讯
查看>>
玩一玩博客,嘿嘿
查看>>
Ubuntu设置python3为默认版本
查看>>
JsonCpp 的使用
查看>>
问题账户需求分析
查看>>
JavaSE-代码块
查看>>
爬取所有校园新闻
查看>>
32、SpringBoot-整合Dubbo
查看>>
python面向对象基础
查看>>
HDU 2044 一只小蜜蜂(递归)
查看>>
docker 下 安装rancher 笔记
查看>>
spring两大核心对象IOC和AOP(新手理解)
查看>>
数据分析相关
查看>>
Python LDAP中的时间戳转换为Linux下时间
查看>>
微信小程序蓝牙连接小票打印机
查看>>
C++_了解虚函数的概念
查看>>
全新jmeter视频已经上架
查看>>
Windows 8下如何删除无线配置文件
查看>>
oracle系列(五)高级DBA必知的Oracle的备份与恢复(全录收集)
查看>>
hp 服务器通过串口重定向功能的使用
查看>>