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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2-1 公路村村通 (25 分)

發布時間:2024/5/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2-1 公路村村通 (25 分) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現有村落間道路的統計數據表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。

輸入格式:

輸入數據包括城鎮數目正整數N(≤1000)和候選道路數目M(≤3N);隨后的M行對應M條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見,城鎮從1到N編號。

輸出格式:

輸出村村通需要的最低成本。如果輸入數據不足以保證暢通,則輸出?1,表示需要建設更多公路。

輸入樣例:

6 15 1 2 5 1 3 3 1 4 7 1 5 4 1 6 2 2 3 4 2 4 6 2 5 2 2 6 6 3 4 6 3 5 1 3 6 1 4 5 10 4 6 8 5 6 3

輸出樣例:

12 #include<stdio.h> #include<string.h> int map[1001][1001]; int minCost[1001];//記錄與該頂點鄰接的邊最小權值 int visited[1001];//記錄是否訪問過 int N,M; int min(int a,int b) {return a > b ? b : a; } int prime() {int i,sum=0,v;for(i=1;i<=N;i++) minCost[i]=99999999;//初始化為最大minCost[1]=0;while(1){v = -1;for(i=1;i<=N;i++)//找到權值最小的邊所對應的頂點{if(!visited[i]&&(v==-1||minCost[v]>minCost[i]))v = i;}if(v==-1)break;//說明頂點都已經經過了if(minCost[v]==99999999)return 0;//如果有個孤立頂點,最小權值不會變,可以判斷圖是否連通 visited[v]=1;sum+=minCost[v];for(i=1;i<=N;i++){if(map[v][i])minCost[i]=min(minCost[i],map[v][i]);//每次更新與頂點鄰接的邊的最小權值}}return sum; } int main() {int i;int city1,city2,cost;scanf("%d %d",&N,&M);for(i=0;i<M;i++){scanf("%d %d %d",&city1,&city2,&cost);map[city1][city2]=cost;//為0的值都是不關聯的map[city2][city1]=cost;}int sum = prime();if(sum)printf("%d\n",sum);elseprintf("-1\n");return 0; }

?prime感覺就是找當前沒訪問過的點中權值最小的;

然后以它為中心更新它可以連接的點的權值? ?:

在(map[v][i])里找

(這可以是無向圖也可以是雙向圖)

PTA-09-最小生成樹 公路村村通 Prime算法(c語言)_lzl2040的博客-CSDN博客https://blog.csdn.net/qq_41234663/article/details/106501525?spm=1001.2014.3001.5502

總結

以上是生活随笔為你收集整理的2-1 公路村村通 (25 分)的全部內容,希望文章能夠幫你解決所遇到的問題。

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