前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Luogu P3174 [HAOI2009]毛毛虫 题解

Luogu P3174 [HAOI2009]毛毛虫 题解

作者头像
yzxoi
发布2022-09-19 12:50:48
1190
发布2022-09-19 12:50:48
举报
文章被收录于专栏:OI

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("%d\n",Max+2);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Luogu P3174 [HAOI2009]毛毛虫 题解
    • Describe
      • Solution
        • Code
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档