題目描述
小n經常去小t家的花園裡散步,小t家的花園有n個長的⼀樣的亭⼦和m條道路連線著亭⼦,但是小t的花園太過於亂了,小n作為⼀個路痴經常進去了之後找不到出來的路,⼀直在環裡面繞圈。於是小n要讓小t把其中的某些路種上向日葵,使得剩下的路不會出現環。
因為向日葵不⽅便種,⽽第i條路長li,需要li個向日葵去種,於是小t想知道他最少要種多少向日葵才能滿⾜小n的要求呢?
輸入第⼀⾏兩個整數n、m,表示花園的亭⼦數目和道路數目;
接下來m⾏,每⾏3個整數a,b,c,表示有⼀條連線著a和b的長度為c的道路。
輸出輸出⼀⾏,⼀個整數,表示小t最少需要種的向日葵數目。
樣例輸入
複製樣例資料
5 51 2 5
1 4 4
3 4 3
2 3 2
3 5 1
樣例輸出
2就是給定乙個有向圖, 有環圖, 然後讓你去掉一些邊之後,使無環,並且去掉的邊和最小,,,正向做不出來, 反向就是選一些邊生成乙個樹(最小生成樹肯定無環) , 所以剩下的就是最優的,但是我們一般求的最小生成樹就是權值最小, 那麼剩下的肯定最大了,與題意不符合, 所以我們將每條邊取成相反數, 此時求最小生成樹, 然後剩下的邊才是最小的, 用此時 的最小生成樹權值加上之前的全部權值和,就是答案,sum + res (sum , 原來圖的所有權值之和, res, 相反數構成的最小生成樹, 最小權值, 負的最小,相加就是最小了)
#include
#include
#include
using namespace std;
const
int n =
2e5+10;
typedef long
long ll ;
struct node
}e[n]
;int f[n]
;int
find
(int x)
intmain()
}printf
("%lld\n"
, res + sum)
;return0;
}
教主的花園
lhx教主最近總困擾於前來膜拜他的人太多了,所以他給他的花園加上了一道屏障。可以把教主的花園附近區域抽像成乙個正方形網格組成的網路,每個網格都對應了乙個座標 均為整數,有可能為負 若兩個網格 x1,y1 x2,y2 有 x1 x2 y1 y2 1,則說這兩個網格是相鄰的,否則不是相鄰的。教主在y 0...
Story 狗尾草花園
不知道為什麼,很多年過去,我卻依然記得這個故事。很小的時候,大概 四 五歲吧,在河灘上和幾個姐姐,一起玩過家家。他們大概十三,四歲吧,反正比我大好多。分成兩組,我在我們一組當然是小卒子。搬搬泥,撿撿石塊什麼的。大家用小石頭在一塊平地上圍成乙個大圈,作為 家 然後找一些漂亮的石頭和細膩的沙 在 家 裡...
教主的花園
教主有著乙個環形的花園,他想在花園周圍均勻地種上n棵樹,但是教主花園的土壤很特別,每個位置適合種的樹都不一樣,一些樹可能會因為不適合這個位置的土壤而損失觀賞價值。教主最喜歡33種樹,這3種樹的高度分別為10,20,3010,20,30。教主希望這一圈樹種得有層次感,所以任何乙個位置的樹要比它相鄰的兩...