路上路徑求和

2022-04-30 08:00:14 字數 1020 閱讀 6292

時間限制: 1 sec  空間限制: 256 mb

輸入輸出檔名:a.in,a.out

給出一棵以1為根的有n個節點的樹,樹上每條邊都有其邊權。

求所有點對之間的路徑上的邊權和的總和。

第一行為n

接下來n-1行,每行三個整數,分別表示一條邊的兩端點編號和邊權。(編號為1..n)

輸出乙個數字表示總和

1 2 10

2 3 10

1 4 20

1->2:10 , 1->3:20 , 1->4:20 , 2->3:10 , 2->4:30 , 3->4:40 , 總和為130。

對於30%的資料,1<=n<=300

對於80%的資料,1<=n<=3000

對於100%的資料,1<=n<=100000,邊權為<=100的正整數。

這是道套路題qaq

單獨考慮每條路徑就好了

#include#include

#include

#define ll long long

using

namespace

std;

const

int m=1e5+7

;int

read()

while(c>='

0'&&c<='9')

return ans*f;

}ll ans,w;

intvis[m],n,x,y,sz[m];

intfirst[m],cnt;

struct nodee[m*2

];void ins(int a,int b,ll w); first[a]=cnt;}

void insert(int a,int

b,ll w)

void dfs(int

x) }

}int

main()

printf(

"%lld\n

",ans);

return0;

}

view code

5055 樹上路徑

給定一顆 n 個結點的無根樹,每個點有乙個點權,定義一條路徑的價值為路徑上的點權和 路徑的點權最大值。給定引數 p,求有多少不同的樹上簡單路徑,滿足它的價值恰好是 p 的倍數。data constraint n 105,p 107 考慮點分治。對於當前的分治重心,把所有以它為起點的路徑取出來,按照路...

題解 樹上路徑

一棵樹的構造過程為 首先以1號點為根,然後依次加入2 n號點。加入i號點時,在1 i 1點中選擇乙個點為f i 將i號點與其相連線。yuri想要求出,每次加點之後路上的最長路徑長度。第一行乙個整數n,表示樹的節點個數。第二行n 1個整數,第i個整數表示f i 1 一行n 1個整數,分別表示加完2 n...

樹上路徑(path)

在 berland,有n 個城堡。每個城堡恰好屬於乙個領主。不同的城堡屬於不同的領主。在所有領主中有乙個是國王,其他的每個領主都直接隸屬於另一位領主,並且間接隸屬於國王。一位領主可以擁有任意數量的下屬。這些城堡被一些雙向的道路連線。兩個城堡是連線的當且僅當他們的主人中一位直接隸屬於另一位。每一年,在...