日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > C++ > 正文

使用C語言實現最小生成樹求解的簡單方法

2020-05-23 14:15:59
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了使用C語言實現最小生成樹求解的簡單方法,包括Prim算法和Kruskal算法的兩種求解方式,需要的朋友可以參考下

最小生成樹Prim算法樸素版

有幾點需要說明一下。

1、2個for循環都是從2開始的,因為一般我們默認開始就把第一個節點加入生成樹,因此之后不需要再次尋找它。

2、lowcost[i]記錄的是以節點i為終點的最小邊權值。初始化時因為默認把第一個節點加入生成樹,因此lowcost[i] = graph[1][i],即最小邊權值就是各節點到1號節點的邊權值。

3、mst[i]記錄的是lowcost[i]對應的起點,這樣有起點,有終點,即可唯一確定一條邊了。初始化時mst[i] = 1,即每條邊都是從1號節點出發。

編寫程序:對于如下一個帶權無向圖,給出節點個數以及所有邊權值,用Prim算法求最小生成樹。

使用C語言實現最小生成樹求解的簡單方法

輸入數據:

7 11

A B 7

A D 5

B C 8

B D 9

B E 7

C E 5

D E 15

D F 6

E F 8

E G 9

F G 11

輸出:

A - D : 5

D - F : 6

A - B : 7

B - E : 7

E - C : 5

E - G : 9

Total:39

最小生成樹Prim算法樸素版 C語言實現 代碼如下

 

 
  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3.  
  4. #define MAX 100 
  5. #define MAXCOST 0x7fffffff 
  6.  
  7. int graph[MAX][MAX]; 
  8.  
  9. int Prim(int graph[][MAX], int n) 
  10. /* lowcost[i]記錄以i為終點的邊的最小權值,當lowcost[i]=0時表示終點i加入生成樹 */ 
  11. int lowcost[MAX]; 
  12.  
  13. /* mst[i]記錄對應lowcost[i]的起點,當mst[i]=0時表示起點i加入生成樹 */ 
  14. int mst[MAX]; 
  15.  
  16. int i, j, min, minid, sum = 0; 
  17.  
  18. /* 默認選擇1號節點加入生成樹,從2號節點開始初始化 */ 
  19. for (i = 2; i <= n; i++) 
  20. /* 最短距離初始化為其他節點到1號節點的距離 */ 
  21. lowcost[i] = graph[1][i]; 
  22.  
  23. /* 標記所有節點的起點皆為默認的1號節點 */ 
  24. mst[i] = 1; 
  25.  
  26. /* 標記1號節點加入生成樹 */ 
  27. mst[1] = 0; 
  28.  
  29. /* n個節點至少需要n-1條邊構成最小生成樹 */ 
  30. for (i = 2; i <= n; i++) 
  31. min = MAXCOST; 
  32. minid = 0; 
  33.  
  34. /* 找滿足條件的最小權值邊的節點minid */ 
  35. for (j = 2; j <= n; j++) 
  36. /* 邊權值較小且不在生成樹中 */ 
  37. if (lowcost[j] < min && lowcost[j] != 0) 
  38. min = lowcost[j]; 
  39. minid = j; 
  40. /* 輸出生成樹邊的信息:起點,終點,權值 */ 
  41. printf("%c - %c : %d/n", mst[minid] + 'A' - 1, minid + 'A' - 1, min); 
  42.  
  43. /* 累加權值 */ 
  44. sum += min; 
  45.  
  46. /* 標記節點minid加入生成樹 */ 
  47. lowcost[minid] = 0; 
  48.  
  49. /* 更新當前節點minid到其他節點的權值 */ 
  50. for (j = 2; j <= n; j++) 
  51. /* 發現更小的權值 */ 
  52. if (graph[minid][j] < lowcost[j]) 
  53. /* 更新權值信息 */ 
  54. lowcost[j] = graph[minid][j]; 
  55.  
  56. /* 更新最小權值邊的起點 */ 
  57. mst[j] = minid; 
  58. /* 返回最小權值和 */ 
  59. return sum; 
  60.  
  61. int main() 
  62. int i, j, k, m, n; 
  63. int x, y, cost; 
  64. char chx, chy; 
  65.  
  66. /* 讀取節點和邊的數目 */ 
  67. scanf("%d%d", &m, &n); 
  68. getchar(); 
  69.  
  70. /* 初始化圖,所有節點間距離為無窮大 */ 
  71. for (i = 1; i <= m; i++) 
  72. for (j = 1; j <= m; j++) 
  73. graph[i][j] = MAXCOST; 
  74.  
  75. /* 讀取邊信息 */ 
  76. for (k = 0; k < n; k++) 
  77. scanf("%c %c %d", &chx, &chy, &cost); 
  78. getchar(); 
  79. i = chx - 'A' + 1; 
  80. j = chy - 'A' + 1; 
  81. graph[i][j] = cost; 
  82. graph[j][i] = cost; 
  83.  
  84. /* 求解最小生成樹 */ 
  85. cost = Prim(graph, m); 
  86.  
  87. /* 輸出最小權值和 */ 
  88. printf("Total:%d/n", cost); 
  89.  
  90. //system("pause"); 
  91. return 0;  

Kruskal算法:

 

 
  1. void Kruskal(Edge E[],int n,int e) 
  2. int i,j,m1,m2,sn1,sn2,k; 
  3. int vset[MAXE]; 
  4. for (i=0;i<n;i++) vset[i]=i; //初始化輔助數組 
  5. k=1; //k表示當前構造最小生成樹的第幾條邊,初值為1 
  6. j=0; //E中邊的下標,初值為0 
  7. while (k<n) //生成的邊數小于n時循環 
  8. {  
  9. m1=E[j].u;m2=E[j].v; //取一條邊的頭尾頂點 
  10. sn1=vset[m1];sn2=vset[m2]; //分別得到兩個頂點所屬的集合編號 
  11. if (sn1!=sn2) //兩頂點屬于不同的集合,該邊是最小生成樹的一條邊 
  12. {  
  13. printf(" (%d,%d):%d/n",m1,m2,E[j].w); 
  14. k++; //生成邊數增1 
  15. for (i=0;i<n;i++) //兩個集合統一編號 
  16. if (vset[i]==sn2) //集合編號為sn2的改為sn1 
  17. vset[i]=sn1; 
  18. j++; //掃描下一條邊 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
91精品国产综合久久香蕉的特点 | 国产欧美综合在线观看第十页 | 国产亚洲欧美色| 视频在线一区二区| 中文av字幕一区| www在线视频| 蜜桃精品视频| 成人精品视频一区| 国产日韩成人精品| 精品熟女一区二区三区| 精品视频在线视频| 精品网站999www| 国产三级在线播放| 国产最顶级的黄色片在线免费观看| 欧美日韩国产在线观看| 二区视频在线观看| 久精品在线观看| 日韩欧美在线看| 精品久久久网| 91蜜桃在线视频| 欧美乱大交xxxxx免费| 国产调教精品| 韩国一区二区av| 欧美日韩尤物久久| 最近中文字幕第一页| 国产欧美日韩视频| 午夜国产视频| 又黄又www的网站| 韩国v欧美v日本v亚洲| 国产欧美日韩91| 国产在线观看黄色| 日韩在线视频精品| 亚洲视频电影在线| 国产三级在线| 欧美日韩国产不卡| 视频一区中文字幕国产| 深夜福利一区二区| 中文字幕日韩亚洲| 国产绿帽一区二区三区| 欧美日本精品| 午夜少妇久久久久久久久| 欧美.日韩.国产.一区.二区| 91精品久久久久久蜜臀| 91精品国产综合久久精品| 一级片在线播放| 国产亚洲二区| 中文字幕亚洲乱码| 日韩欧美综合| 国产欧美久久久| 国产色在线 com| 精品久久久精品| 欧美三级三级三级爽爽爽| 中文字幕精品一区二| 欧美日韩成人综合| 欧美日韩999| 精品国内自产拍在线视频| 欧美日韩精品免费| 欧美日韩在线看| 欧美不卡123| 伊人网站在线| 国产成人va亚洲电影| 欧美日韩中文国产| 国产一级片在线| 亚洲成在线观看| 国产成人精品综合久久久| 亚洲免费观看视频| 不卡一二三区| 免费中文字幕日韩欧美| 国产色综合网| 日韩欧美国产高清| 欧美日韩综合视频网址| 日韩欧美国产三级| 国产精品福利视频一区二区三区| 欧洲精品二区| 国产日韩精品在线观看| 午夜国产在线视频| 亚洲国产91精品在线观看| 久久综合久久综合九色| 日韩精品视频在线观看网址 | 欧美日韩激情在线一区二区三区 | 一级免费a一片| 91精品国产综合久久久久久| 中文av字幕一区| 最近中文字幕日韩精品| 久久精品久久久久| 中文字幕在线高清| 欧美三级三级三级爽爽爽| 色综合影院在线| 日韩欧美国产成人一区二区| 国产日韩在线亚洲字幕中文| 国产欧美综合在线观看第十页| 精品乱子伦一区二区| 亚洲制服丝袜一区| 欧美日韩在线观看首页| 国产成人精品三级| 一区二区视频免费看| 亚洲视频电影在线| 国产在线精品日韩| 亚洲第一页中文字幕| 国产婷婷一区二区| 欧美成人一区二区| 久久精品黄色片| 欧美日韩性视频| www中文字幕| 欧美亚洲免费高清在线观看| 91久久精品国产91性色69| 欧美日韩在线视频首页| 91av久久久| 日韩在线视频中文字幕| 日韩中文字幕在线观看视频| 国产欧美日韩最新| 一本一道综合狠狠老| 欧美三级在线看| 久久久99精品久久| 久久久99久久精品欧美| 日韩精品福利一区二区三区| 欧美中文字幕视频| 亚洲中文字幕一区| 99综合精品久久| 欧美日韩国产不卡| 日韩欧美国产成人精品免费| 99精品视频99| 精品人妻一区二区三区视频| 日韩av一区在线| 成人h视频在线观看| 日韩欧美国产不卡| 日韩欧美在线看| 久久精品女人| 日韩中文字幕在线视频观看 | 国产日产一区二区| 在线免费视频一区二区| 亚洲一区精品在线| 91精品国产全国免费观看| 国产黄色一区| 亚洲综合三区| 91色在线看| 亚洲一区资源| 亚洲视频在线观看日本a| 影音先锋中文字幕在线观看| 国产婷婷在线观看| 亚洲乱码中文字幕| 日本亚洲欧美| 一区二区三区在线播| 国产成人中文字幕| 国产精品一区二区三区免费观看| 精品视频资源站| 精品一二三区视频| 亚洲专区一区| 欧美变态tickling挠脚心| 91精品国产免费| 中文字幕在线国产| 国产免费久久久| 国产欧美日韩91| 国产最新在线| 中文网丁香综合网| 亚洲国产欧美日韩在线| 日韩不卡高清视频| 亚洲a一级视频| 999精品网| 中文字幕一区不卡| 91精品国产丝袜白色高跟鞋| 丰满少妇一区二区| 狠狠色综合色区| 国产成人中文字幕| 91麻豆精品在线| 欧美 日韩 综合| 国产激情99| 粉嫩喷白浆久久| av免费观看网站| 日韩精品 欧美| av不卡免费看| 亚洲电影中文字幕在线观看| 999精品在线| 精品国内自产拍在线视频| 欧美1区免费| 日韩高清在线不卡| 精品日韩视频在线观看 | 日韩欧美在线中字| 久久99蜜桃精品| 999精品网| 日韩视频专区| 91精品国产91| 国产一区高清视频| 久久精品人妻一区二区三区| 亚洲丝袜一区| 亚洲综合欧美在线| 日韩国产高清一区| 在线黄色国产电影| 91亚洲国产| 中文字幕亚洲字幕| 日韩午夜黄色| 在线精品日韩| 日韩视频第二页| 九一精品国产| 91精品在线观| 亚洲一区在线观看视频| 日本不卡高清视频一区| 欧美国产一区视频在线观看| 国产在线不卡av| av免费不卡国产观看| 亚洲欧美视频一区二区三区 | 尤物av一区二区| 国产黄色在线| 日韩欧美国产视频| 青青久在线视频免费观看| 国产v日产∨综合v精品视频| 欧美中文字幕视频在线观看| 精品人妻一区二区三区视频| 中文字幕高清在线播放| 国产一区精品| 色国产在线视频| 中文字幕亚洲在| 国产资源在线观看入口av| 午夜精品一区二区三区视频免费看| 亚洲欧美99| √新版天堂资源在线资源| 中文在线第一页| 中文字幕精品一区二| 国产亚洲欧美中文| 日韩三级视频在线看| 亚洲成年人影院在线| 国产视频一区二| 欧美日中文字幕| 日韩国产在线不卡视频| 国产自产视频| 日韩欧美三级在线| 欧美一级免费看| 欧美成人精品在线| 欧美日韩在线视频一区| 亚洲热线99精品视频| 91精品婷婷国产综合久久| 国产黄色在线| 欧美三级网址| 精品中文字幕在线| 欧美日韩在线播放一区| av午夜在线| 极品久久久久久| av不卡免费看| 国产激情在线视频| 国产婷婷色一区二区三区| 国产福利不卡| 亚洲一区中文| 欧美三级中文字幕| 不卡在线视频| 中文字幕精品在线播放| 欧美日韩国产一区在线| 国产成人精品免费网站| 欧美一级久久久久久久久大| 精人妻一区二区三区| 国产亚洲一级| 日韩精品 欧美| 在线视频不卡一区二区| 日韩精品视频免费| 国自产拍在线网站网址视频| 亚洲福利一区二区三区| 日韩亚洲不卡在线| 欧美日韩国产在线| 狠狠色综合色区| 日韩在线中文字幕| 亚洲尤物av| 91蜜桃婷婷狠狠久久综合9色| 亚洲高清不卡一区| 日韩欧美亚洲日产国| 日韩精品中文字幕第1页| 国产1区在线| 日韩亚洲欧美中文高清在线| 日韩在线精品| 日韩精品在线观看视频| 欧美日韩国产观看视频| 欧美,日韩,国产在线| 国产在线观看色| 欧美中文字幕在线| 日韩影院二区| 亚洲欧美伊人| 欧美日韩免费精品| 日韩精品视频在线| 久99久视频| 欧美一级欧美三级在线观看| 一区二区精品区| 99精品在线播放| 日韩欧美在线精品| 偷窥国产亚洲免费视频| 日韩在线中文字幕| 99这里有精品视频| 国产黄色一级片| 日韩国产成人精品| 视频一区不卡| 亚洲福利一区二区三区| 久久久99免费| 91精品国产色综合久久久蜜香臀| 亚洲高清不卡一区| 伊人精品视频| 国产69精品久久久久孕妇国产69久久| 欧美日韩国产系列| 国产成人精品免费在线| 精品日韩av| 国产一区二中文字幕在线看| 欧美亚洲国产日韩| 欧美三级在线视频| 欧美一级手机免费观看片| 粉嫩粉嫩芽的虎白女18在线视频| 91精品国产手机| 日韩国产在线不卡视频| 中文字幕亚洲高清| 日本一欧美一欧美一亚洲视频| 日韩中文字幕二区| av不卡免费看| 国产成人va亚洲电影| 久本草在线中文字幕亚洲欧美| 日韩精品三级| 国产黄在线播放| 99久久精品国产亚洲| 亚洲欧美中文字幕| 在线观看免费国产成人软件| 国产欧美日韩中文久久| 国产亚洲一区字幕| 国产视频1区| 中文字幕2020第一页| 亚洲а∨精品天堂在线| 免费视频最近日韩| 97久久精品| 日韩欧美一级在线播放| 在线视频三区| 精品日本视频| 亚洲综合在线电影| 日韩在线高清视频| 日韩精品视频在线观看视频| 日本亚洲欧美三级| 久久69成人| 日韩在线高清视频| 日韩精品视频网站| 国产成人精品999| 久久久久蜜桃| 日韩国产欧美在线视频| 国产九九在线| 欧美日韩国产第一页| 欧美三级精品| 五月天久久比比资源色| 伊人永久在线| 一区二区视频免费看| 欧美熟妇乱码在线一区| 中文字幕日韩视频| 国产在线日韩精品| 欧美亚洲专区| 中文字幕日韩在线观看| xxxcom在线观看| 国产乱码午夜在线视频| 国产福利久久| 一本一道久久a久久精品综合蜜臀| 亚洲欧美日本国产专区一区| 亚洲美女视频一区| 欧美日韩国产综合久久| 亚洲综合中文字幕在线| 国产成人精品av久久| 91精品免费看| 日韩欧美在线综合网| 日韩中文字幕观看| 欧美另类久久久品| 日韩欧美三级在线| 亚洲免费观看在线观看| 国产成免费视频| 黄色欧美日韩| 欧美日韩综合在线免费观看| 精品福利一区二区三区| 国产一卡2卡3卡免费网站| 欧洲精品在线视频| 日韩中文字幕久久| 一区二区不卡在线播放| 亚洲国产综合久久| 国内激情久久| 日韩在线视频观看正片免费网站| 一区二区视频在线观看免费的| 国产亚洲一区字幕| 五月综合激情日本mⅴ| 国产黄色小视频| 亚洲一区在线观看免费| 色国产在线视频| 国产 中文 字幕 日韩 在线| 精品999视频| 国产日韩成人精品| 国产 中文 字幕 日韩 在线| 在线精品视频免费播放| 久久精品国产91精品亚洲| 国产福利第一页| 日韩欧美中文字幕视频| 亚洲国产www| 亚州福利视频| 日韩欧美色综合网站| 视频一区不卡| 欧美亚洲视频在线看网址| 日韩在线视频一区二区三区| 国产亚洲视频中文字幕视频| 精品三级在线| 成人福利一区| 精品视频999| 一二三区精品福利视频| 中文字幕亚洲视频| 国产欧美日产一区| 欧美国产小视频| 久久精品欧美日韩精品|