很多题都是这个套路,第一遍树形dp,第二遍邻位容斥转移

注意讨论清楚转移方式

码:

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
#define N 400005
vector<int>v[N];
int f1[N],f2[N],a,b,ans,n,m,i;
void dfs(int o,int fa)
{int i;f1[o]=1;f2[o]=1;for(i=0;i<v[o].size();i++){int nd=v[o][i];if(nd==fa)continue;dfs(nd,o);if(f1[nd]>f1[o]){f2[o]=f1[o];f1[o]=f1[nd];}else{if(f1[nd]>f2[o])f2[o]=f1[nd];if(f2[nd]>f2[o])f2[o]=f2[nd];                    }}
f1[o]+=v[o].size()-1;
f2[o]+=v[o].size()-1;
}
void dfs2(int o,int fa)
{int i;if(o==1)ans=max(ans,int(f1[o]-(v[o].size()-1)+f2[o]-(v[o].size()-1)+v[o].size()-1));else ans=max(ans,int((f1[fa]-v[fa].size()+1==f1[o]?f2[fa]:f1[fa])+f1[o]));for(i=0;i<v[o].size();i++){int nd=v[o][i];if(nd==fa)continue;dfs2(nd,o);}
}
int main()
{scanf("%d%d",&n,&m);for(i=1;i<=m;i++){scanf("%d%d",&a,&b);v[a].push_back(b);v[b].push_back(a);}dfs(1,0);dfs2(1,0);printf("%d",ans);
}

[HAOI2009]毛毛虫 dfs相关推荐

  1. P3174 [HAOI2009]毛毛虫(树形dp)

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

  2. [HAOI2009]毛毛虫

    题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大. 输入输出格式 输入格式: 在文本文件 worm.in 中第一行两个整数 N , M ,分 ...

  3. P3174 [HAOI2009] 毛毛虫

    题意:给你一棵树,取出一根链和与链相邻的"脚":问能取出的最大节点数是多少? 分析:很容易想到:f[u] 是 u 为当前子树根节点的毛毛虫头时子树内毛毛虫最大点数.但当时其实最大的 ...

  4. NOIP前的刷题记录

    因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数   组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008 ...

  5. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  6. 【haoi2009】毛毛虫

    题面 题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树,抽出一部分就变成了右边的一个毛毛虫了. 输入格式 第一行两个整数N ...

  7. [JS][dfs]题解 | #迷宫问题#

    题解 | #迷宫问题# 题目链接 迷宫问题 题目描述 定义一个二维数组 N*M ,如 5 × 5 数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 1, 1 ...

  8. [C] [编程题]连通块(DFS解决)

    时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M 来源:牛客网 金山办公2020校招服务端开发工程师笔试题(一) 题目描述 给一个01矩阵,1代表是陆地,0代表 ...

  9. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

最新文章

  1. mysql高可用之MMM
  2. TensorFlow惊现大bug?网友:这是逼着我们用PyTorch啊!
  3. 2019计算机科学论文研讨大会,2019年中华口腔医学会口腔医学计算机专业委员会第十七次全国口腔医学数字化学术会议第一轮会议通知...
  4. 用php生成html文件,怎样用PHP生成html文件
  5. 取消win开机chkdsk is verifying files
  6. 阿里云云客服平台正式商业化
  7. 跟我学jQuery(二) 初识jQuery
  8. docker info 显示 Docker 系统信息
  9. 新书《编写可测试的JavaScript代码 》出版,感谢支持
  10. 阿里云李刚:下一代低延时的直播CDN
  11. 更新字典 (Updating a Dictionary,UVa12504)
  12. 非纯 []!()输出 始皇帝 推导过程
  13. 光通量发光强度照度亮度关系_照度、强光、光通量之间是什么关系
  14. redis的持久化(RDBAOF的区别)
  15. npm 代理的设置和取消
  16. 计算机组装模拟系统吗,怎么在线模拟组装电脑
  17. mir2ei源码韩文乱码处理
  18. 汉语编程工具易语言即学即用教程pdf
  19. 2016年阿里校园招聘笔试题--系统工程师
  20. homeassistant搭建_Centos7搭建Home Assistant

热门文章

  1. php下载apk文件源码下载,PHP_php下载文件源代码(强制任意文件格式下载),一个简单的php文件下载源代码 - phpStudy...
  2. MySQL无中心化集群_MySQL Plus 如何做到无中心化、数据强一致性、秒级切换?
  3. php登录后自动退出登录,PHP利用Cookie设置用户30分钟未操作自动退出功能
  4. Android笔记 对话框demo大全
  5. 使用CLion构建Qt项目
  6. 因更改注册表而导致无法打开QQ文件所在文件夹
  7. nginx php 源码安装,Nginx和php安装及配置一之编译安装nginx-1.8.0
  8. php中的oop,php oop有什么用?
  9. mysql5.1安装过程_MySQL 5.1.7安装全过程
  10. linux批量文件编码转换,Linux系统批量转换文件编码脚本