時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 262144k,其他語言524288k
64bit io format: %lld
桃花一簇開無主,可愛深紅映淺紅。
——《題百葉桃花》
桃花長在桃樹上,樹的每個節點有乙個桃花,調皮的htbest想摘盡可能多的桃花。htbest有乙個魔法棒,摘到樹上任意一條鏈上的所有桃花,由於htbest法力有限,只能使用一次魔法棒,請求出htbest最多可以摘到多少個桃花。
第一行有乙個正整數n,表示桃樹的節點個數。接下來n-1行,第i行兩個正整數ai,bi ,表示桃樹上的節點ai,bi之間有一條邊。
第一行乙個整數,表示htbest使用一次魔法棒最多可以摘到多少桃花。
示例1複製
3複製1 22 3
3示例2
複製
3複製1 21 3
3示例3
複製
4複製1 22 3
3 4
4
對於100%的測試資料:大致思路:1 ≤ n ≤ 1000000
資料量較大,注意使用更快的輸入輸出方式。
很容易想到求樹的直徑,即從任意節點開始dfs一次,找到最長鏈的乙個節點。然後從這個節點出發找到另乙個節點。這兩個節點的距離最長。(用鏈式前向星一次就能ac,用vector容易卡在95%,但吸氧能過)
ac**:
# pragma gcc optimize (3) //吸氧
# include # include # include # include # include using namespace std;
const int maxn = 1e6+10;
vector v[maxn];
bool book[maxn];
int l,res=0;//l為最長鏈的乙個節點
void dfs(int root,int cnt)
for(int i=0;i>n;
for(int i=1;imemset(book,0,sizeof book);
book[1]=1;
dfs(1,1);
memset(book,0,sizeof book);
book[l]=1;
res=0;
dfs(l,1);
cout<}
牛客小白月賽6 C 桃花
題目鏈結 桃花一簇開無主,可愛深紅映淺紅。題百葉桃花 桃花長在桃樹上,樹的每個節點有乙個桃花,調皮的htbest想摘盡可能多的桃花。htbest有乙個魔法棒,摘到樹上任意一條鏈上的所有桃花,由於htbest法力有限,只能使用一次魔法棒,請求出htbest最多可以摘到多少個桃花。第一行有乙個正整數n,...
牛客小白月賽6 C桃花 樹直徑
樹的直徑是指樹的最長簡單路。求法 兩遍bfs 先任選乙個起點bfs找到最長路的終點,再從終點進行bfs,則第二次bfs找到的最長路即為樹的直徑 桃花一簇開無主,可愛深紅映淺紅。題百葉桃花 桃花長在桃樹上,樹的每個節點有乙個桃花,調皮的htbest想摘盡可能多的桃花。htbest有乙個魔法棒,摘到樹上...
牛客小白月賽6 桃花
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 桃花一簇開無主,可愛深紅映淺紅。題百葉桃花 桃花長在桃樹上,樹的每個節點有乙個桃花,調皮的htbest想摘盡可能多的桃花。htbest有乙個魔法棒,摘到樹上任意一條...