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 ...