樹形DP 樹的最長路徑

2021-10-07 17:22:52 字數 1056 閱讀 6341

給定一棵樹,樹中包含 nn 個結點(編號11~nn)和 n−1n−1 條無向邊,每條邊都有乙個權值。

現在請你找到樹中的一條最長路徑。

換句話說,要找到一條路徑,使得使得路徑兩端的點的距離最遠。

注意:路徑中可以只包含乙個點。

輸入格式

第一行包含整數 nn。

接下來 n−1n−1 行,每行包含三個整數 ai,bi,ciai,bi,ci,表示點 aiai 和 bibi 之間存在一條權值為 cici 的邊。

輸出格式

輸出乙個整數,表示樹的最長路徑的長度。

資料範圍

1≤n≤100001≤n≤10000,

1≤ai,bi≤n1≤ai,bi≤n,

−105≤ci≤105−105≤ci≤105

輸入樣例:

65 1 6

1 4 5

6 3 9

2 6 8

6 1 7

輸出樣例:

22

#include

#include

#include

#include

using

namespace std;

const

int n =

10010

, m =

2* n;

int n, m;

int ans;

int h[n]

, e[m]

, ne[m]

, w[m]

, idx;

void

add(

int a,

int b,

int c)

intdfs

(int u,

int father)

ans =

max(ans, d1 + d2)

;return dist;

}int

main()

dfs(1,

-1);

cout << ans << endl;

return0;

}

1072 樹的最長路徑(樹形DP)

題目 題意 n個點n 1條邊的無向圖樹,每條邊都有乙個權值,可正可負,求最大權值。題解 樹形dp,任取乙個點為根節點,記錄每個節點往下搜的所有路徑的權值,找到最大權值和第二大權值,以這個點為核心的最大權值的路徑就是這倆權值和。include include include include inclu...

數字轉換 樹形dp之樹的最長路徑應用

第二天叫醒我的不是鬧鐘,是夢想!如果乙個數 x 的約數之和 y 不包括他本身 比他本身小,那麼 x 可以變成 y,y 也可以變成 x。例如,4 可以變為 3,1 可以變為 7。限定所有數字變換在不超過 n 的正整數範圍內進行,求不斷進行數字變換且不出現重複數字的最多變換步數。輸入格式 輸入乙個正整數...

樹形dp ,求最大路徑權值,最長路徑

include include include include include include include include include include include using namespace std typedef long long ll const int maxn 500005...