Kruskal算法的C语言程序
生活随笔
收集整理的這篇文章主要介紹了
Kruskal算法的C语言程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Kruskal算法是有關圖的最小生成樹的算法。Kruskal算法是兩個經典的最小生成樹算法之一,另外一個是Prim算法。
程序來源:Kruskal's Algorithm。
百度百科:Kruskal算法。
維基百科:Kruskal's Algorithm。
C語言程序(去除了原文中非標準的C語言代碼):
#include<stdio.h> #include<stdlib.h> 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 0 3 0 5 0 3 0 1 5 0 5 6 4 6 0 5 0 0 2 0 3 6 0 0 6 0 0 4 2 6 0 The edges of Minimum Cost Spanning Tree are 1 edge (1,3) =1 2 edge (4,6) =2 3 edge (1,2) =3 4 edge (2,5) =3 5 edge (3,6) =4Minimum cost = 13
轉載于:https://www.cnblogs.com/tigerisland/p/7564175.html
總結
以上是生活随笔為你收集整理的Kruskal算法的C语言程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pycharm使用技巧(转载)
- 下一篇: TPS(薄板样条) 2D 插值