hdu3534,個人認為很經典的樹形dp

2022-05-23 19:00:08 字數 1329 閱讀 2234

題目大意為,求乙個樹的直徑(最長路),以及直徑的數量

樸素的dp只能找出某點開始的最長路徑,但這個最長路徑卻不一定是樹的直徑,本弱先開始就想簡單了,一直wa

直到我看了某位大牛的題解。。。

按照那位大牛的思路,我們來考慮直徑的構成:

情況1:由某葉子節點出發產生的最長路徑直接構成

情況2:由某有多個兒子的節點出發產生的兩條長路徑組成,這其中,又可以分為兩條長路徑長度相等與否兩種情況

所以 在dp的時候,我們需要記錄每個節點出發產生的最長路徑和次長路徑,以及他們的數量,數量的統計也是非常麻煩

詳細請見**:

#include#include

#include

#include

#include

#include

#include

#include

#include

#define mod 998244353

#define max 100000000

using

namespace

std;

intt,n,m,p,k,tt,f;

intx;

int head[10010

];typedef

struct

node

node;

node edge[

20010

];typedef

struct

dpnode

dp;dp dp[

10010

];void

ini()

}void dfs(int s,int

p)

else

if(tmp==dp[s].dp1)

else

if(tmp>dp[s].dp2)

else

if(tmp==dp[s].dp2)

}if(leaf)

int c1=0,c2=0

;

for(int i=head[s];i;i=edge[i].next)

if(c1>1

) }}

else

if(c2>0

) }}

else

return;}

void

solve()

else

if(dp[i].len==ans)

}printf(

"%d %d\n

",ans,num);

}int

main()

return0;

}

jquery 向上滾動 四 個人認為好一些,哈

關於2009年度開放課題申請工作的 03 03 關於2009年度開放課題申請工作的 03 03 關於2009年度開放課題申請工作的 03 03 關於2009年度開放課題申請工作的 03 03 關於2009年度開放課題申請工作的 03 03 超輕材料與表面技術 教育部重 03 02 超輕材料與表面技術...

個人認為漢字數字研究應該增加乙個 部件的模組

個人認為漢字數字研究應該增加乙個 部件的模組 就是,輪廓連線的部分,稱為 部件 部件是由筆畫組成的 如 法字,是又四個部件組成,3個點 1個去 增加部件,個人設計師,只要設計2 300個部件,提供組合軟體,就可以,輕鬆完成國標2級字型檔的設計 在考慮新的數字字型檔模型 今年下半年的目標,是建立出,黑...

hdu 2066 乙個人的旅行

我覺得這題應該用floyd演算法會更好一點吧,猜的,還沒學,囧.我是用dijstra暴力水過.嗯開始學floyd code include include include include include include include include include include include ...