Luogu P3174 [HAOI2009]毛毛虫 题解

2022-09-19 12:50:48 浏览数 (1)

Luogu P3174 [HAOI2009]毛毛虫 题解

Describe

题目链接

对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大。例如下图左边的树(图 1)抽出一部分就变成了右边的一个毛毛虫了(图 2)。

Solution

毛毛虫?

很明显,我们可以先预处理出每个点的入度。

显然最后的答案就是sum{a_i}-(s-1) 1=sum{a_i-1} 2(好好想想)

Code

代码语言:javascript复制
#include<bits/stdc  .h>
using namespace std;
int n,m,in[300010],Max,now;
vector<int> v[300010];
inline void DFS(int x,int fa,int sum){
if(sum>Max){
Max=sum;
now=x;
}
for(auto i:v[x])
if(fa!=i) DFS(i,x,sum in[i]);
}
int main(){
scanf("%d%d",&n,&m);
for(int x,y,i=1;i<=m;i  ){
scanf("%d%d",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
in[x]  ;in[y]  ;
}
for(int i=1;i<=n;i  ) in[i]--;
DFS(1,0,in[1]);
Max=0;
DFS(now,0,in[now]);
printf("%dn",Max 2);
}

0 人点赞