欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

Shortest Path【每日一題】

1、題意
給一顆偶數(shù)個節(jié)點的有邊權(quán)樹 , 節(jié)點數(shù)為n , 要求劃分成n / 2 個集合, 兩個點在一個集合中, 代價為兩點之間的最短路徑 , 然后要求求最小代價

2、策略
1)、貪心的講 , 我們兩點之間盡量連一到兩條邊, 不然多條邊肯定會造成更大的代價,
2)、樹上的算法一般都是由dfs 為主體框架 , 來進行構(gòu)造整個算法流程的
dfs設計的肯定是當前節(jié)點u ,兒子節(jié)點v之間的關(guān)系 , 同時要所有的關(guān)系都要考慮清楚,
一般而言 , 關(guān)系就兩種 , u有兒子節(jié)點v , u沒有兒子節(jié)點v ,

對于這個問題來說,
第一, 兩點之間要連一條邊(由兩點劃分為一個集合, 代價為兩點之間的最短路即邊權(quán))
那么考慮dfs設計框架關(guān)系中第二個關(guān)系, u沒有兒子節(jié)點v , 即u是葉子節(jié)點
對于這個問題,葉子節(jié)點u只能連接父親節(jié)點,不然它沒有別的邊可以用了,
但是如果葉子結(jié)點的父親有偶數(shù)個兒子節(jié)點, 這偶數(shù)個兒子節(jié)點必然會全部連接到父親節(jié)點(不然兒子節(jié)點沒有邊可用
圖片說明

這個2號節(jié)點是4號節(jié)點和5號節(jié)點的父親節(jié)點, 這個題目要劃分兩個節(jié)點到一塊, 現(xiàn)在這種情況一個父親節(jié)點有偶數(shù)個孩子節(jié)點,并且孩子節(jié)點到父親節(jié)點的邊全部對答案有貢獻, 但是算上父親節(jié)點, 則有奇數(shù)個節(jié)點,不滿組兩點劃分為一個集合 ,那么這個父親節(jié)點只能向上連接它的父親節(jié)點, 即2號節(jié)點連1號節(jié)點,
2號節(jié)點的孩子幾點則相當于兩兩配對了, 即4號節(jié)點和5號節(jié)點劃分到一個集合中, 2號節(jié)點表示無奈,你們不和我連接, 我去找爹爹

相反, 如果2號節(jié)點如果有奇數(shù)個節(jié)點,則2號節(jié)點要和全部兒子節(jié)點連接
圖片說明

此時2 4 5 8 節(jié)點自己內(nèi)部配對了, 并且消耗了三條邊, 2號節(jié)點就不需要向上連接1號節(jié)點了,

由此可以看出來啊,
如果u節(jié)點有偶數(shù)個孩子節(jié)點v , 即算上u節(jié)點有奇數(shù)個幾點, 那么這個時候就需要u節(jié)點向上連接父親節(jié)點,
否則 , 就可以在u的子樹內(nèi)部自己消化, 不需要算上u到父親節(jié)點的邊,

dfs關(guān)系中第一種關(guān)系u節(jié)點有孩子節(jié)點v節(jié)點, 同樣具有同樣的性質(zhì),
圖片說明

這個圖 , 1號節(jié)點有偶數(shù)個孩子節(jié)點, 但是3號節(jié)點需要和1號結(jié)點連接, 正好劃分為(6 , 7) , (3 , 1) , 2 號子樹隨便和一個孩子節(jié)點連接, 然后兩外兩個節(jié)點劃分為一個集合 ,正好劃分完
并且題目說明n必定為偶數(shù),滿足上圖

如果節(jié)點u子樹***有奇數(shù)個節(jié)點, 需要連接父親節(jié)點, 貢獻加上這個邊權(quán), 否則不算

#include <bits/stdc++.h>
using namespace std ;
const int N = 1e5 + 10 ;
vector<pair<int , int>> v[N] ;
int tot[N] , n , m ;
typedef long long ll ;
ll ans = 0 ;
int dfs(int u , int fa , int len)
{
    tot[u] = 1 ;
    for(auto x : v[u]) 
    {

        if(x.first == fa) continue ;
        dfs(x.first , u , x.second) ;
        tot[u] += tot[x.first] ;
    }
    if(tot[u] % 2) ans += len ;
    return 0 ;
}
void work()
{
    int n ;
    cin >> n ;
    ans = 0 ;
    for(int i = 1; i <= n ;i ++) v[i].clear() ;
    for(int i = 1 , x , y , c ; i < n ; i ++) 
          cin >> x >> y >> c , v[x].push_back({y , c }) , v[y].push_back({x , c}) ;
    dfs(1 , 0 , 0) ;
    cout << ans << endl ;
}
int main()
{
    int T ;
    cin >> T ;
    while(T --) 
         work() ;
    return 0 ;
}
全部評論

相關(guān)推薦

mjasjon:這種trash中廠 簡歷過篩概率比大廠還低(除阿里系)
投遞嗶哩嗶哩等公司6個崗位
點贊 評論 收藏
分享
誰知道呢_:要掉小珍珠了,庫庫學三年,這個結(jié)果
點贊 評論 收藏
分享
你出生在農(nóng)村,與其它農(nóng)村小孩子無異小學時你對成績沒有概念,只感覺上課不聽課也是無聊,只知道不寫完作業(yè)會被老師罰站一到考試,自己成績總是名列靠前,即使偶爾落后,你也從不在意中學時你覺得課本的東西很簡單,隨便學學就會了,并沒有大量刷題你總是想不通,那些所謂的數(shù)學物理中難題,明明是在送分,為什么你的同學總是想不出解題方法高中時這三年你過的不容易,晚睡早起,給了自己很多壓力.但是你也發(fā)現(xiàn)自己是有些小聰明的,你感覺班里有些同學很刻苦,但成績比你差遠了。那些數(shù)學題和物理題的陷阱,同學一遍遍踩坑,但是你總能發(fā)現(xiàn)并避開它們.“為了父母的期盼,為了恩師的厚望,為了天賜的智慧,為了青春的理想......”“天行健...
創(chuàng)作助手_劉北:其實,這種已經(jīng)是神童級別的了,不費吹灰之力就能拿到自己想要的東西,就像機器按照程序走了一遍,就像我小時候看愛情公寓,覺得他們都很慘,幾個人只能擠在一個房間里合租,但是好在他們有一群非常好的朋友,隨著時間的推移,慢慢長大了,在看愛情公寓的時候,覺得他們都很厲害,博士、留學生、***、電臺公子,數(shù)學天才,任何一個都是我可望而不可即的,更別說可以在異地認識一群更好的朋友了,所以呢,人還是要自給自足,滿足當下,不要攀比,意氣風發(fā)的且有理想的18歲少年永遠都存在,只不過隨著時間的推移他被你包裹在了洋蔥的最深處。
點贊 評論 收藏
分享
評論
點贊
收藏
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
??推髽I(yè)服務