資料結構基礎 公路村村通

2021-08-19 09:55:44 字數 2482 閱讀 2593

我直接在老師給的樣例**上改,因為我覺得老師給的**真的很好啊,不是麼;手把手教你寫**系列 ……(^-^),順便讓自己多看看優秀**。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
//

// main.cpp

// mst01

//#include #include #include #include typedef int weighttype;

typedef int elementtype;

typedef int setname;

/*-------------------- 頂點並查集定義 --------------------*/

typedef int vertex; /* 預設元素可以用非負整數表示 */

typedef int* settype ; /* 假設集合元素下標從0開始 */

using namespace std;

typedef struct adjvnode * ptrtoadjvnode;

struct adjvnode;

typedef struct vnodeadjlist;

typedef struct gnode * ptrtognode;

struct gnode;

typedef ptrtognode lgraph;

struct enode;

typedef enode* edge;

/*-----------------------------定義結束---------------------------------------*/

void initializevset( settype s, int n )

eset[parent] = x;

}void initializeeset( lgraph graph, edge eset )

/* 初始化為最小堆 */

for ( ecount=graph->ne/2; ecount>=0; ecount-- )

percdown( eset, ecount, graph->ne );

}void swap( edge a, edge b)

int getedge( edge eset, int currentsize )

/*-------------------- 最小堆定義結束 --------------------*/

/*-------------------- 鄰接表的圖定義 --------------------*/

lgraph creategraph(vertex maxnumber)

return graph;

}void insertedge(lgraph mst, edge edge)

/*-------------------圖定義結束---------------------------*/

/*-------------------定義test---------------------------*/

void test1(settype vset, int n)

void test2(edge eset, int n)

/*-------------------test定義結束---------------------------*/

/*--------------------krustal演算法定義 --------------------*/

int kruskal( lgraph graph, lgraph mst )

}if ( ecount < graph->nv-1 )

totalweight = -1; /* 設定錯誤標記,表示生成樹不存在 */

return totalweight;

}/*--------------------krutal演算法結束------------------------------------*/

int main(int argc, const char * argv)

int total;

total = kruskal(graph, mst);

cout << total;

return 0;

}

公路村村通

公路村村通 kruscal 演算法 include include include using namespace std int per 1010 n,m struct node 結構體來儲存邊 x 5005 bool cmp node a,node b int find int x 並查集的查詢...

公路村村通

現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數 n 和候選道路數目 m 隨後的 m行對應 m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見,城鎮從...

公路村村通

現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入格式 輸入資料報括城鎮數目正整數n 1000 和候選道路數目m 3n 隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。...