HDU1233 還是暢通工程 最小生成樹

2022-06-26 04:51:09 字數 1061 閱讀 4909

題意:

求出連線各個村莊最小的公路總長度,把最小公路總長度求出來。

思路:

最小生成樹原理,帶入資料求得。

**:

prim:

#include#include

using

namespace

std;

#define inf 0x3f3f3f3f

intmain()

visit[

1]=1;int pos=1; //

第一次給low賦值

for(i=1;i<=n;++i)

int result=0; //

執行m-1次,因為至少需要m-1次才能把所有的城市連通

for(i=1;ii)

}result+=min;

visit[pos]=1

;

for(j=1;j<=n;++j)}}

cout

}return0;

}

krusual:

#include#include

#include

using

namespace

std;

struct

node

;node arr[

10000

];int per[110

],n;

bool

cmp(node a,node b)

void

init()

}int find(int

x)bool join(int x,int

y)

return0;

}int

main()

sort(arr,arr+m,cmp);

int sum=0

;

for(int i=0;ii)

}cout

}return0;

}

HDU 1233 還是暢通工程

題意 有1 n個村莊,村莊與村莊之間要鋪設公路,在使任意兩個村莊都能相互到達的前提下使修路的花費最少 解題思路 這題是典型的最小生成樹的題,可以選擇prim演算法或者kruskal演算法。prim使用與稀疏圖,二此題中的邊有n n 1 2條,因此最好是用kruskal演算法。kruskal演算法的思...

hdu 1233 還是暢通工程

這個題我用的貪心和並查集來解決的。kruskal演算法 首先用貪心對長度排序,然後按照長度從小到 擇連線,沒有被聯通的則直接連,要注意乙個問題就是如果4個村莊是1 4聯通了,2 3聯通了,那麼肯定還要讓這兩個集合聯通 用並查集 因此我用了乙個p來表示不同的集合。ac include include ...

hdu 1233 還是暢通工程

傳送門給定n個村子,和每個村子之間的距離,現在要求連線這n個村子的最小距離這題典型的最小生成樹模板題,krusal演算法和prim演算法都可以達到要求 並且這題的資料量不大,並且是完全圖,利用鄰接矩陣做就好 include const int maxn 1e2 2 int g maxn maxn i...