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,表示符合條件的魔法陣的魔力值之和。
input示例
4 6
1 2 3
1 3 1
1 4 7
2 3 4
2 4 5
3 4 6
output示例
12
/*
首先題目意思是說:首先找出構成mst的最大的邊記為max
然後在所有邊中找小於max的邊構成最大生成樹。
所以此處應該用kruskal演算法,便於求最小生成樹與最大生成樹。
*/
#include
#include
#include
typedef
long
long ll;
using
namespace
std;
const
int maxn = 1e5+5;
const
int maxm = maxn*2+5;
ll f[maxn]; //並查集
int max = 0;
int m;
struct edge
edge[maxm];
//從小到大
bool cmp_0(edge a, edge b)
//從大到小
bool cmp_1(edge a, edge b)
int find(int x)
//找最小生成樹種權值最大的邊
//kruskal模板**
int kruskal_0(int n)
f[x] = y;
cnt++;
}if(n-1 == cnt)
break;
}if(n-1 > cnt)
return -1;
return ans;
}//最大生成樹
ll kruskal_1(int n)
if(n-1 == cnt)
break;
}if(n-1 > cnt)
return -1;
return ans;
}int main()
max = kruskal_0(n);
ll ant = kruskal_1(n);
printf("%lld",ant);
return
0;}
1640 天氣晴朗的魔法
1640 天氣晴朗的魔法 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 這樣陰沉的天氣持續下去,我們不免擔心起他的健康。51nod魔法學校近日開展了主題為 天氣晴朗 的魔法交流活動。n名魔法師按陣法站好,之後選取n 1條魔法鏈將所有魔法師的魔力連線起來,形成乙個...
nod 1640 天氣晴朗的魔法
這樣陰沉的天氣持續下去,我們不免擔心起他的健康。51nod魔法學校近日開展了主題為 天氣晴朗 的魔法交流活動。n名魔法師按陣法站好,之後選取n 1條魔法鏈將所有魔法師的魔力連線起來,形成乙個魔法陣。魔法鏈是做法成功與否的關鍵。每一條魔法鏈都有乙個魔力值v,魔法最終的效果取決於陣中所有魔法鏈的魔力值的...
1640 天氣晴朗的魔法(krustal演算法)
1640 天氣晴朗的魔法 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 這樣陰沉的天氣持續下去,我們不免擔心起他的健康。51nod魔法學校近日開展了主題為 天氣晴朗 的魔法交流活動。n名魔法師按陣法站好,之後選取n 1條魔法鏈將所有魔法師的魔力連線起來,形成乙個...