7-50 畅通工程之局部最小花费问题 (35 分)(思路加详解)来呀兄弟们冲呀呀呀呀呀呀呀
生活随笔
收集整理的這篇文章主要介紹了
7-50 畅通工程之局部最小花费问题 (35 分)(思路加详解)来呀兄弟们冲呀呀呀呀呀呀呀
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:題目
某地區(qū)經過對城鎮(zhèn)交通狀況的調查,得到現有城鎮(zhèn)間快速道路的統計數據,并提出“暢通工程”的目標:使整個地區(qū)任何兩個城鎮(zhèn)間都可以實現快速交通(但不一定有直接的快速道路相連,只要互相間接通過快速路可達即可)。現得到城鎮(zhèn)道路統計表,表中列出了任意兩城鎮(zhèn)間修建快速路的費用,以及該道路是否已經修通的狀態(tài)。現請你編寫程序,計算出全地區(qū)暢通需要的最低成本。
輸入格式:
輸入的第一行給出村莊數目N (1≤N≤100);隨后的N(N?1)/2行對應村莊間道路的成本及修建狀態(tài):每行給出4個正整數,分別是兩個村莊的編號(從1編號到N),此兩村莊間道路的成本,以及修建狀態(tài) — 1表示已建,0表示未建。
輸出格式:
輸出全省暢通需要的最低成本。
輸入樣例:
4 1 2 1 1 1 3 4 0 1 4 1 1 2 3 3 0 2 4 2 1 3 4 5 0輸出樣例:
3二:思路
這個就是Prime算法的變型,我想的是如果這條路是已經修過,那么的話就將其的權值你設為0
三:上碼
/**思路:如果是已經修過,那么的話就將其的權值你設為0*/ #include<bits/stdc++.h> using namespace std;typedef struct GNode* PtrGraph;typedef struct GNode{int Nv;int Ne;int Data[105][105]; }gnode;int N; //利用鄰接矩陣儲存圖的基本信息 void CreateGraph(PtrGraph G){cin >> N;G->Nv = N;G->Ne = N*(N-1)/2;//矩陣初始化 for(int i = 1; i <= G->Nv; i++){for(int j = 1; j <= G->Nv; j++){G->Data[i][j] = 0; }}//矩陣賦值for(int i = 0; i < G->Ne; i++){int a,b,c,d;cin >> a >> b >> c >> d; if(d == 0){G->Data[a][b] = c;G->Data[b][a] = c; } } } //輸出矩陣 void print_Graph(PtrGraph G){for(int i = 1; i <= G->Nv; i++){for(int j = 1; j <= G->Nv; j++){cout << G->Data[i][j] << ' ';}cout << endl;} } //Prime最小成樹的算法 void Prime(PtrGraph G){int dist[105];int visited[105] = {0};int count = 0;for(int i = 1; i <= G->Nv; i++){dist[i] = G->Data[1][i];//將符號為1到其他點的距離存在 dist數組中 }visited[1] = 0;count++;while(1){int m = -1;int infinite = 9999;//求取最小值for(int i = 1; i <= G->Nv; i++){if(dist[i] < infinite && visited[i] != 1){infinite = dist[i];m = i;}}visited[m] = 1;count++;if(m == -1){break;} //更新for(int i = 1; i <= G->Nv; i++){if(visited[i] != 1 && G->Data[m][i] < dist[i] ){dist[i] = G->Data[m][i];}} } int sum = 0;for(int i = 1; i <= G->Nv; i++){sum += dist[i];}cout << sum;} int main(){PtrGraph G = (PtrGraph)malloc(sizeof(struct GNode));CreateGraph(G); // print_Graph(G);Prime(G);}
加油BOY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
總結
以上是生活随笔為你收集整理的7-50 畅通工程之局部最小花费问题 (35 分)(思路加详解)来呀兄弟们冲呀呀呀呀呀呀呀的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 头条更新实在不知道写什么想在头条写文章不
- 下一篇: 7-52 两个有序链表序列的交集 (20