題目大意
給出一棵樹,其中每兩個節點都可以形成乙個路徑(要求路徑中的邊只能走一次),求出所有路徑中的長度最大值。
分析
由於樹的任何乙個節點均可以作為根節點,因此dfs時候,選擇1即可。
實現
#pragma once
#pragma execution_character_set("utf-8")
// 本檔案為utf-8 編碼格式
#include#include#includeusing namespace std;
#define n 100005
int dp[n][2];
struct edge;
edge gedges[2*n];
int ghead[n];
bool **isited[n];
int gedgeindex;
void insertedge(int u, int v)
pairdfs(int root)
**isited[root] = true;
int e = ghead[root];
int max1 = 0, max2 = 0, max = 0, child_num = 0;
for (; e != -1; e = gedges[e].next)
else
child_num++;
} }if (child_num == 0)
dp[root][0] = dp[root][1] = 0;
else if (child_num == 1)
else
return pair(dp[root][0], dp[root][1]);
}void init()
int main()
pairresult = dfs(1);
printf("%d\n", result.first>result.second ? result.first : result.second);
return 0;
}
hiho 1050 樹中的最長路
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述上回說到,小ho得到了一棵二叉樹玩具,這個玩具是由小球和木棍連線起來的,而在拆拼它的過程中,小ho發現他不僅僅可以拼湊成一棵二叉樹!還可以拼湊成一棵多叉樹 好吧,其實就是更為平常的樹而已。但是不管怎麼說,小ho喜愛的玩具又...
hiho 1050 樹中的最長路 樹的直徑
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述上回說到,小ho得到了一棵二叉樹玩具,這個玩具是由小球和木棍連線起來的,而在拆拼它的過程中,小ho發現他不僅僅可以拼湊成一棵二叉樹!還可以拼湊成一棵多叉樹 好吧,其實就是更為平常的樹而已。但是不管怎麼說,小ho喜愛的玩具又...
hiho 1050 樹中的最長路 樹的直徑
最近在複習比較簡單的知識,順便當整理 吧。樹的直徑是乙個經典問題,即求樹上最遠兩點的距離。思路一 任取乙個點,求這個點的最遠點的最遠點,兩遍bfs即可。1 include 2 include 3 include 4 include 5 include 6 include 7 include 8 in...