日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51Nod 1640 - 天气晴朗的魔法(最小生成树变形)

發布時間:2024/10/12 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51Nod 1640 - 天气晴朗的魔法(最小生成树变形) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1640

【題目描述】
這樣陰沉的天氣持續下去,我們不免擔心起他的健康。

51nod魔法學校近日開展了主題為“天氣晴朗”的魔法交流活動。

N名魔法師按陣法站好,之后選取N - 1條魔法鏈將所有魔法師的魔力連接起來,形成一個魔法陣。

魔法鏈是做法成功與否的關鍵。每一條魔法鏈都有一個魔力值V,魔法最終的效果取決于陣中所有魔法鏈的魔力值的和。

由于逆天改命的魔法過于暴力,所以我們要求陣中的魔法鏈的魔力值最大值盡可能的小,與此同時,魔力值之和要盡可能的大。

現在給定魔法師人數N,魔法鏈數目M。求此魔法陣的最大效果。

Input
兩個正整數N,M。(1 <= N <= 10^5, N <= M <= 2 * 10^5)

接下來M行,每一行有三個整數A, B, V。(1 <= A, B <= N, INT_MIN <= V <= INT_MAX)

保證輸入數據合法。
Output
輸出一個正整數R,表示符合條件的魔法陣的魔力值之和。

Sample Input
4 6
1 2 3
1 3 1
1 4 7
2 3 4
2 4 5
3 4 6
Sample Output
12

【思路】
首先題目中的兩個要求是有先后順序的,優先滿足魔力值最大的邊最小,然后在這個前提之下滿足所有邊的魔力總和最大。要使得最大邊權最小只需要求出最小生成樹,最小生成樹上面邊權最大的那條邊就是最大邊權,然后只用所有邊權小于等于這個最大邊權的邊再做一次最大生成樹就是答案了

#include<bits/stdc++.h> using namespace std; typedef long long ll;const int maxn=100005;struct Edge{int from,to;ll dist;Edge(int f,int t,ll d):from(f),to(t),dist(d){}bool operator<(const Edge& e)const{return dist<e.dist;} };int n,m,pos; int par[maxn]; vector<Edge> edges;int find(int x){ return x==par[x]?x:par[x]=find(par[x]); }void kruscal(){sort(edges.begin(),edges.end());for(int i=0;i<=n;++i) par[i]=i;int cnt=0;for(int i=0;i<m;++i){Edge& e=edges[i];int x=find(e.from);int y=find(e.to);if(x!=y){par[x]=y;if(++cnt==n-1){pos=i;while(pos+1<edges.size() && edges[pos+1].dist==edges[pos].dist) ++pos;break;}}} }void solve(){ll ans=0;for(int i=0;i<=n;++i) par[i]=i;int cnt=0;for(int i=pos;i>=0;--i){Edge& e=edges[i];int x=find(e.from);int y=find(e.to);if(x!=y){par[x]=y;ans+=e.dist;if(++cnt==n-1) break;}}printf("%lld\n",ans); }int main(){scanf("%d%d",&n,&m);for(int i=0;i<m;++i){int u,v;ll w;scanf("%d%d%lld",&u,&v,&w);edges.push_back(Edge(u,v,w));}kruscal();solve();return 0; }

轉載于:https://www.cnblogs.com/wafish/p/10465181.html

總結

以上是生活随笔為你收集整理的51Nod 1640 - 天气晴朗的魔法(最小生成树变形)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。