hiho 1050 樹中的最長路

2021-09-08 11:51:36 字數 1092 閱讀 1594

題目大意

給出一棵樹,其中每兩個節點都可以形成乙個路徑(要求路徑中的邊只能走一次),求出所有路徑中的長度最大值。

分析

由於樹的任何乙個節點均可以作為根節點,因此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...