題目:
某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出「暢通工程」的目標,
使整個地區任何兩個城鎮間都可以實現快速交通(但不一定有直接的快速道路相連,只要互相間接通過快
速路可達即可)。現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。
現請你編寫程式,計算出全地區暢通需要的最低成本:
1 #include "stdio.h"
2 /*
3 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出「暢通工程」的目標,
4 使整個地區任何兩個城鎮間都可以實現快速交通(但不一定有直接的快速道路相連,只要互相間接通過快
5 速路可達即可)。現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。
6 現請你編寫程式,計算出全地區暢通需要的最低成本:
7 輸入格式:
8 9 輸入的第一行給出村莊數目nn(1\le n \le 1001≤n≤100);隨後的n(n-1)/2n(n?1)/2行對應村莊間道路的成本及修建狀態:
10 每行給出4個正整數,分別是兩個村莊的編號(從1編號到nn),此兩村莊間道路的成本,以及修建狀態 — 1表示已建,0表示未建。
11 輸出格式:
12 13 輸出全省暢通需要的最低成本。
14 輸入樣例:
15 16 4
17 1 2 1 1
18 1 3 4 0
19 1 4 1 1
20 2 3 3 0
21 2 4 2 1
22 3 4 5 0
23 輸出樣例:
24 25 3
26 */
27 #define max 101
28 #define infinity 10000 //表示極大值
29 //prim演算法從頂點入手
30 struct edgeclosedge[max];//輔助陣列,記錄從u到v-u具有最小代價的邊
34 void minspantree_prime(int g[max][max] ,int n)
35 49 }
50 printf("實現全地區暢通需要的最低成本的道路有:\n");
51 for(i=1;i52
60 }
61 for( j=1;j<=n;j++)
62
67 sum += closedge[k].lowcost;
68 printf("(%d,%d)",closedge[k].adjvex,k);//輸出最小邊
69 closedge[k].lowcost = -1;//將頂點k加入集合u中
70 for( j=1;j<=n;j++)
71
77 }
78
79 }
80 printf("\n最低成本為:%d",sum);
81 }
82 83 int main()
94 }
95 for( i=0;i96
99 scanf("%d",&n);
100 m = n*(n-1)/2;
101 for( i=0;i102
113 minspantree_prime(g,n);
114 return 0;
115 }
資料結構與演算法課程設計 Prim演算法
題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...
資料結構與演算法課程設計 Prim演算法
題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...
資料結構課程設計
資料結構課程設計 include define n 30 include include includeusing namespace std struct node typedef node phone,mingzi node hashnumble node hashname int hash1 ...