題意:給定乙個n個點m條邊的無向圖,找一顆苗條度(最大邊減最小邊)最小的生成樹。
思路:假設苗條度最小的這棵樹的最小邊為a,若要使苗條度最小,答案一定是以a為最小邊的一顆最小生成樹,所以可以考慮列舉最小邊,計算出苗條度並更新答案。
#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps 1e-6
#define ll long long
using namespace std;
const int maxn = 100 + 5;
const int maxm = 10000;
const int inf = 0x3f3f3f3f;
int n, m;
int u[maxm], v[maxm], w[maxm], p[maxn], r[maxm];
bool cmp(const int i, const int j)
int find_p(int x)
int kruscal(int edge_id)
if(cnt == n-1) return w[e]-w[r[edge_id]];
} return inf;
}int main()
return 0;
}
POJ3522 最小差值生成樹 LCT
題目描述 給定乙個標號為從 1 到 n的 有 m 條邊的無向圖,求邊權最大值與最小值的差值最小的生成樹。輸入格式 第一行兩個數 n,m,表示圖的點和邊的數量。第二行起 m 行,每行形如 ui,vi,wi,代表 ui到 vi 間有一條長為 wi 的無向邊。輸出格式 輸出一行乙個整數,代表你的答案。資料...
POJ 1258 最小生成樹
include include struct fiberfiber 10000 struct farmsfarms 100 void exchange struct fiber fiber,int i,int j int partition struct fiber fiber,int p,int ...
最小生成樹 poj 2485
include include include include include include define m 505 define im 505 505 2 using namespace std int r im int w im int u im int v im int p m int c...