nod 1640 天氣晴朗的魔法

2021-07-11 23:16:26 字數 2088 閱讀 3582

這樣陰沉的天氣持續下去,我們不免擔心起他的健康。

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

這個題目其實讀懂了就覺得還算比較簡單;

題目的意思就是要求生成樹中所有邊的權值中,最大值最小,也就是說最大邊權盡量小,組成乙個生成樹;

第二步就是求這個生成樹的最大權值和,也就是最大生成樹;

那先來說第一步,其實就是按照kruskal演算法,將邊權按照從小到大排序,然後從小到大列舉,看到哪個權值能夠組成一棵樹,其實也就是覆蓋了所有的點;然後記錄這個權值w_max,再次呼叫kruskal,這次從大到小排序,然後所有大於w_max的都過濾,只使用比這個小的邊,然後組成的最大生成樹,就是結果;

直接上**了;

#include#include#include#include#include#includeusing namespace std;

#define ll long long

typedef struct node

node;

node nodes[200005];

bool cmp(const node &s, const node &t)

int father[100005];

int rank[100005];

int hash[100005];

int search_x(int x)

bool union_xy(int x, int y)

else

//rank[root2] += rank[root1];

}return true;

}int main()

sort(nodes, nodes+m, cmp);

setst;

int pos = 0;

int sum = 0;

memset (hash, 0, sizeof(hash));

for (int i = 0; i < m; ++ i)

if (! hash[nodes[i].a])

if (! hash[nodes[i].b])

// if (st.size() == n)

// // st.insert(nodes[i].a);

// st.insert(nodes[i].b);

//if (st.find(nodes[i].a))

}//注意我這裡是找到最大權值的上邊界,這樣我就可以直接從pos-1的位置求最大生成樹了

//不這樣也行,那麼在呼叫kruskal演算法時,大於這個最大權值的過濾掉也是一樣的

while (pos < m)

else

break;

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

ll weight = 0;

int num = 0;

for (int i = pos - 1; i >= 0; -- i)

if (num == n - 1)

{//cout << weight <

1640 天氣晴朗的魔法

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

1640 天氣晴朗的魔法

1640 天氣晴朗的魔法 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 這樣陰沉的天氣持續下去,我們不免擔心起他的健康。51nod魔法學校近日開展了主題為 天氣晴朗 的魔法交流活動。n名魔法師按陣法站好,之後選取n 1條魔法鏈將所有魔法師的魔力連線起來,形成乙個...

51Nod 1640 天氣晴朗的魔法

1640 天氣晴朗的魔法 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 這樣陰沉的天氣持續下去,我們不免擔心起他的健康。51nod魔法學校近日開展了主題為 天氣晴朗 的魔法交流活動。n名魔法師按陣法站好,之後選取n 1條魔法鏈將所有魔法師的魔力連線起來,形成乙個...