[HAOI2009]毛毛虫 dfs
来源:互联网 发布:淘宝千人千面原理 编辑:程序博客网 时间:2024/06/02 23:09
很多题都是这个套路,第一遍树形dp,第二遍邻位容斥转移
注意讨论清楚转移方式
码:
#include<iostream>#include<cstdio>#include<vector>using namespace std;#define N 400005vector<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);}
阅读全文
0 0
- [HAOI2009]毛毛虫 dfs
- [HAOI2009] 毛毛虫
- [HAOI2009]毛毛虫
- 【HAOI2009】毛毛虫
- 【HAOI2009】【毛毛虫】【树形dp】
- 油炸毛毛虫
- 毛毛虫效应
- 练习:毛毛虫
- [HAOI2009]中国象棋
- 两只毛毛虫
- 谁来解救"毛毛虫"
- USTCOJ 1382 毛毛虫
- UIKit动力学---毛毛虫案例
- Worm(毛毛虫)HDU2151
- 毛毛虫的人生路(zt)
- 五只毛毛虫的故事
- 小别夜话--送给Dear毛毛虫
- 2431: [HAOI2009]逆序对数列
- 2017年,程序员在人工智能领域的薪资有多高?
- 百度开撕离职前高管:侵犯商业机密索赔 5000 万!
- VM12 下安装OS X 10.11
- 如何永久修改阿里云centos 7.3用户名
- 360路由器登录协议的分析和模拟实现
- [HAOI2009]毛毛虫 dfs
- 超级公牛冠军赛(Superbull)解析+代码
- 用python爬虫爬取去哪儿4500个热门景点,看看国庆不能去哪儿
- 前文提要
- linux下部署apache软件
- 修改Realm中授权方法查询登录人的权限
- 进程调度API之yield
- 11. Container With Most Water
- 10. find