給定一棵樹,樹中包含 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...