poj3522 Kruskal生成樹變形

2021-09-02 04:21:13 字數 931 閱讀 5397

題意:求乙個圖所有生成樹中 最大邊與最小邊的差的最小值。

解題思路:要求max-min的最小值 就是要讓max最小 min 最大。 而我們的kruskal演算法求得的當前生成樹的max一定是最小的。所以我們只要將min從小到大遍歷,然後求得最小值即可。(語言表達的有點繞口,建議參照**結合著看)。

#include "iostream"

#include "algorithm"

using namespace std;

#define maxsize 6000

#define inf 100000

struct node;

node edge[maxsize];

int f[maxsize];

int e;

int n,m;

void addnode(int u,int v,int w)

bool cmp(node &a,node &b)

int findeset(int x)

int kruskal(int s)

int fnum=n;//集合個數

for (i=s;i}

} return inf;//無法得到一顆生成樹 }

int main()

int a,b,c;

while(m--)

//求所有生成樹中 最大邊與最小邊差的最小值 max-min 最小 要max 最小 min 最大

//而kruskal 方法中求得的生成樹 max一定是最小 所以我們只要min從小到大取值即可

//sort(edge,edge+e,cmp);

int ans=inf;

for (int i=0;i}

if (ans!=inf)

else

} return 0;

}

poj3522解題報告

題目大意 題意 給點乙個無向圖,求乙個生成樹使樹中最大邊與最小邊的差的最小。解題思路 首先按照邊權排一次序,然後依次列舉最小的邊權,利用kruskal演算法生成無根樹!利用並查集維護集合關係 include include include include include using namespac...

POJ 3522 Slim Span 最小生成樹

題意 給定乙個n個點m條邊的無向圖,找一顆苗條度 最大邊減最小邊 最小的生成樹。思路 假設苗條度最小的這棵樹的最小邊為a,若要使苗條度最小,答案一定是以a為最小邊的一顆最小生成樹,所以可以考慮列舉最小邊,計算出苗條度並更新答案。include include include include incl...

POJ3522 最小差值生成樹 LCT

題目描述 給定乙個標號為從 1 到 n的 有 m 條邊的無向圖,求邊權最大值與最小值的差值最小的生成樹。輸入格式 第一行兩個數 n,m,表示圖的點和邊的數量。第二行起 m 行,每行形如 ui,vi,wi,代表 ui到 vi 間有一條長為 wi 的無向邊。輸出格式 輸出一行乙個整數,代表你的答案。資料...