題意:求乙個圖所有生成樹中 最大邊與最小邊的差的最小值。
解題思路:要求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 的無向邊。輸出格式 輸出一行乙個整數,代表你的答案。資料...