【Luogu】P3174毛毛虫(树形DP)
2024-09-08 03:56:06
树形DP水题,设f[x][0]是以x为根的子树,内部只有半条链(就是链的两个端点一个在子树里,一个不在子树里)的最大值,f[x][1]是以x为根的子树,内部有一条完整的链(选两个内部的子树作为链的左端点和右端点)的最大值。
于是可以很轻松的得出DP方程:
一开始f[x][0]=f[x][1]=1
然后dfs,深搜x的子树,记录一下x有多少子节点的同时记录子树的最大半链和次大半链(用来在转移的时候凑成x子树内的整个链)。最后注意细节乱搞搞就行了。
本题不考思维但是比较考验考虑细节的能力。
(具体有哪些坑点不知道,因为是1A)
#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#define maxn 300010
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} int f[maxn][]; struct Edge{
int next,to;
}edge[maxn*];
int head[maxn],num;
inline void add(int from,int to){
edge[++num]=(Edge){head[from],to};
head[from]=num;
} void dfs(int x,int fa){
int fir=,sec=,son=;
f[x][]=f[x][]=;
for(int i=head[x];i;i=edge[i].next){
int to=edge[i].to;
if(to==fa) continue;
son++;
dfs(to,x);
if(fir<f[to][]){
sec=fir;fir=f[to][];
}
else if(sec<f[to][]) sec=f[to][];
}
if(son>) f[x][]=max(f[x][],fir+sec+son-);
else f[x][]=max(f[x][],fir+);
f[x][]=max(f[x][],fir+son);
} int main(){
int n=read(),m=read();
for(int i=;i<=m;++i){
int x=read(),y=read();
add(x,y);
add(y,x);
}
dfs(,);
int ans=f[][];
for(int i=;i<=n;++i) ans=max(ans,f[i][]+);
printf("%d\n",ans);
return ;
}
最新文章
- css:删除:&#215;的效果
- Eclipse 插件安装方法和插件加载失败解决办法
- Intellij Idea 创建EJB项目入门(一)
- HTTP/1.1 Range和Content-Range
- Verilog中锁存器与多路选择器
- Codeforces Round #242 (Div. 2) &;lt;A-D&;gt;
- c++,类的组合
- 利用git提交代码
- Vue语法学习第三课——计算属性
- Day3:html和css
- 基于 HTML5 的工业互联网 3D 可视化应用
- JavaSE| 包装类| 时间
- java的poi 读取exc 文件
- C#获取文件MD5值方法
- git只合并某一个分支的某个commit
- hdu 4939 三色塔防
- Think PHP递归重新排序无限极子分类数组(递归无限极分类)
- Ubuntu 16.04LTS 安装 Node.js stable
- javascript json数据的处理
- 6.006 Introduction to Algorithms
热门文章
- python爬虫之路——对字符串的处理
- 【PowerShell语音计算器】
- 摘自 dd大牛的《背包九讲》
- STM32F042开发板学习实践
- 【0624作业】使用Scanner类输入并显示会员卡号
- C#动态数组ArrayList
- nodejs写一个简单的Web服务器
- mysql基本知识点
- Angular - Can&#39;t bind to &#39;ngModel&#39; since it isn&#39;t a known property of &#39;input&#39;.
- IntelliJ IDEA 配置 Tomcat 运行web项目