poj3522解題報告

2021-07-03 11:20:23 字數 629 閱讀 7182

題目大意:題意:給點乙個無向圖,求乙個生成樹使樹中最大邊與最小邊的差的最小。

解題思路;首先按照邊權排一次序,然後依次列舉最小的邊權,利用kruskal演算法生成無根樹!!!(利用並查集維護集合關係)

#include

#include

#include

#include

#include

using namespace std;

const int maxn=1e4;

const int inf=(1<<30);

int p[maxn],n,m,u,v,d;

struct edge

bool operator < (const edge& rhs) const

};void make_set(int n)

int find_set(int x)

vectore;

int main()

sort(e.begin(),e.end());

int ans=inf;

for(int l=0;l}if(ans==inf)  printf("-1\n");

else printf("%d\n",ans);

}return 0;

}

POJ3522 最小差值生成樹 LCT

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

poj解題報告 1328

不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...

poj解題報告 2586

這題我是用的貪心演算法,其實不用也可以,列舉也能解決,因為情況不多。因為是每連續5個月必有虧損,而一年只有1 5,2 6,3 7,4 8 8 12共8種情況。現在設盈餘為s,虧損為d,可列出以下幾種情況。ssssdssssdss 4ssssddsssddss 3s 2d ssdddssdddss 2...