51nod1640 最小生成樹

2022-02-28 23:46:03 字數 927 閱讀 8718

題意:

在一副圖中,搞n-1條邊,使得每個點都相連,

有多種可能的情況,所以求一種使得其中n-1條邊的最大是所有可能的最小,然後並保證連線的n-1條邊的權值總和最大

思路:

一開始沒有看清題意,隨便寫了一發「最大生成樹」連案例都跑不出,原來還有個條件是有n-1條邊中的最大值是所有可能的最小。

然後窩就納悶了。。。怎麼搞法搞到一條最大的最小,隨便搞了個最小生成樹,寫著寫著發現其實最小生成樹里的最大邊,其他生成樹就是包含的。

那麼找到這條邊,跑一下最大生成樹就好了;

最小生成樹利用並查集比較好~

#include 

using namespace std;

typedef long long ll;

const ll inf=0x3f3f3f3f;

const int n=1e5+10;

struct asd;

asd q[n*4];

bool cmp1(asd a,asd b)

int pre[n];

intm,n;

int find(int

x) int i=x,j;

while(pre[i]!=r)

return r;

}int main()

}for(int i=0;i}

sort(q,q+k,cmp2);

ll ans=0;

for(int i=1;i<=n;i++)

pre[i]=i;

for(int i=0;iint aa=find(q[i].x);

int bb=find(q[i].y);

if(aa!=bb)

}printf("%lld\n",ans);

return

0;}

51nod 1640最小生成樹 最大生成樹

思路 首先對全圖求一次最小生成樹,最出來生成樹的自大邊便是所有情況中最小的 因為kruscal和prime每次選邊都是選從小選到大 然後再從最大的邊從大到小開始列舉最大生成樹,求出權值和即可。include include include includeusing namespace std con...

51 nod 1640天氣晴朗的魔法(最小生成樹)

這樣陰沉的天氣持續下去,我們不免擔心起他的健康。51nod魔法學校近日開展了主題為 天氣晴朗 的魔法交流活動。n名魔法師按陣法站好,之後選取n 1條魔法鏈將所有魔法師的魔力連線起來,形成乙個魔法陣。魔法鏈是做法成功與否的關鍵。每一條魔法鏈都有乙個魔力值v,魔法最終的效果取決於陣中所有魔法鏈的魔力值的...

51nod 1640 天氣晴朗的魔法 最小生成樹

1640 天氣晴朗的魔法 51nod魔法學校近日開展了主題為 天氣晴朗 的魔法交流活動。n名魔法師按陣法站好,之後選取n 1條魔法鏈將所有魔法師的魔力連線起來,形成乙個魔法陣。魔法鏈是做法成功與否的關鍵。每一條魔法鏈都有乙個魔力值v,魔法最終的效果取決於陣中所有魔法鏈的魔力值的和。由於逆天改命的魔法...