1640 天氣晴朗的魔法

2021-08-02 17:39:37 字數 1652 閱讀 9805

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條魔法鏈將所有魔法師的魔力連線起來,形成乙個...