日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kruskal算法的C语言程序

發布時間:2025/6/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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语言程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。