I 愛國(最小生成樹模板)

2021-10-08 13:50:13 字數 1419 閱讀 9710

丁丁妹考上了公務員,經過多年的打拼當上了省長,丁丁妹決定要造福百姓決定給村與村之間修路。他知道村莊間的距離。修路的目標是每兩個村莊之間都能通過公路連線(但不一定有直接的公路相連,只要能間接通過公路可達即可),丁丁妹想知道他最少需要修多長的路。

input

多組樣例,每個測試用例的第1行給出村莊數目n ( < 100 );隨後的n(n-1)/2行對應村莊間的距離,每行給出一對正整數,分別是兩個村莊的編號,以及此兩村莊間的距離。為簡單起見,村莊從1到n編號。

當n為0時,輸入結束,該用例不被處理。

output

對每個測試用例,一行輸出丁丁妹要修的路的總長度。

sample input

31 2 1

1 3 2

2 3 4

21 2 1

0sample output31

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace std;

typedef

long

long ll;

const

int maxn =

500;

int n,m;

bool vis[maxn]

;//用來標記0和1表示這個點是否被選擇過

int mp[maxn]

[maxn]

;//鄰接矩陣用來儲存圖的資訊

int dis[maxn]

;//記錄任意一點到這個點的最近距離

void

prim()

if(now==inf)

break

;//防止不成圖

vis[now]

=true

; sum+

=mz;

for(

int j=

1;j<=n;j++

)//添入新點後更新最小距離if(

最小生成樹模板

prim演算法理解可以參考部落格 prim演算法模板 int prime int v int i,j,sum 0,min,k sum是權重和 for i 1 i n i lowcost i 表明當前狀態下在u內距離v點 s中各點 距離的最小值,每個u中點s 中點 都計算 lowcost i map ...

最小生成樹 模板

const int maxn 1010 const int maxm 200020 struct edge edges maxm int father maxn int find int x int cmp edge a,edge b 將邊按權值排序 int kruskal int n,int m ...

模板 最小生成樹

題目描述 如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入輸出格式 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出...