題目大意為,求乙個樹的直徑(最長路),以及直徑的數量
樸素的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 ...