HDOJ 1233 還是暢通工程

2022-08-30 12:39:10 字數 737 閱讀 5176

題目傳送:hdoj 1233

解題思路:kruskal演算法,利用kruskal演算法獲得最小生成樹,即可求得答案。

資料結構:記錄下起始座標,結束座標,兩點距離和該路是否被選中這四個資訊。

view code

struct

edge

過程:1、讀取所有路徑資訊,儲存在上述資料結構的陣列中;

2、快速排序,使得陣列中的資料結構按路徑長度從小到大排列;

3、優先選擇路徑較短的建樹,此處為for迴圈;

4、建樹過程中,利用並查集判斷該路是否會產生迴路,如果迴路則拋棄;

5、直到生成一棵樹覆蓋所有座標(城市)為止。

題目**:

#include #include struct edgeedge[5000];

int father[110];

int cmp( const void *a ,const void *b)

int find(int a)

int merge(int x,int y)

}int main()

qsort(edge,num,sizeof(edge[0]),cmp);

p=1;//初始化判斷位p,1為選擇,0為拋棄

sum=0;//初始化sum,記錄最短路徑長度

for(i=0;i

}printf("%d\n", sum);

}return 0;

}

HDOJ 1233 還是暢通工程 最小生成樹

time limit 4000 2000 ms j a others memory limit 65536 32768 k j a others total submission s 33106 accepted submission s 14936 problem description 某省調查...

HDU 1233 還是暢通工程

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

杭電 1233 還是暢通工程

基礎的最小生成樹題目 可以拿來練習一下prim演算法和kruskal演算法的運用 prim include include using namespace std int main for int i 1 i n i int t n n 1 2 while t int sum 0 dis 1 0 w...