最小生成樹 Hdu4786

2021-07-04 19:41:38 字數 522 閱讀 9815

hdu4786 

最小生成樹的變形題,求一遍最小,求一遍最大,在從此區間是否含有斐波那契數,別忘了並查集,因為可能不連通。

後來想其實不難,場上出不來的原還是對最小生成數不熟練,基礎薄弱。!

#includeusing namespace std;

int par[100100];

int rank_[101000];

struct edge ;

int n,m;

int init(int n)

}bool comp(const edge& e1,const edge& e2)

bool comp2(const edge& e1,const edge& e2)

edge es[100100];

int find_(int x)

void unite(int x,int y){

x=find_(x);

y=find_(y);

if(x==y) return ;

if(rank_[x]

HDU 4786 斐波那契生成樹

這道題的意思是給你一些邊,某些邊被染成黑色,還有一些邊被染成白色,現在問你沒有乙個生成樹他的白邊的數量是斐波那契數列中的數,我們可以先選黑邊得到最最小的白邊數,先選白邊得到最大的白邊數,然後看看這個區間有沒有斐波那契數即可,注意沒有生成樹時的情況。如下 include include include...

hdu4786簡要題解

簡要題意 給出乙個邊權為1或0的無向圖,求一顆生成樹,使得邊權和為斐波那契數。這裡有乙個重要的結論 一張邊權為1或0的無向圖,如果權值p在最大生成樹權值與最小生成樹權值之間,那麼一定可以構造出一棵權值為p的生成樹。這樣就好辦了。先求出最大生成樹與最小生成樹的權值,然後判斷這兩者之間是否有乙個斐波那契...

hdu 1863 最小生成樹

使用並查集,陣列不要太小 include stdio.h int set 200 int n,m typedef struct nodenode,pnode node road 200 void init int find int u return set u int join int u,int ...