hdu4714 Tree2cycle
来源:互联网 发布:linux查看进程被占用 编辑:程序博客网 时间:2024/05/20 11:36
下午心血来潮找来cjx第一次两人训练一套难度很低题目,就差这道思路正确不敢写,现在补一下。
题意:给你一棵树,每次删除一条边和增加一条边费用都是1,问最少的花费把一棵树变成
一条环。
思路:随手画了几个样例,发现不存在最少花费的策略,结果是唯一的。只要dfs序一遍判断每个点度数,大于2就说明需要删除这个点。思路很简单,清晰。
直接交MLE,需要扩栈,C++提交。
#pragma comment(linker,"/STACK:1024000000,1024000000")#include<cstdio>#include<cstring>#include<vector>using namespace std;const int N=1000000+10;vector<int>g[N];int degree[N],ans;void dfs(int u,int f){ for(int i=0;i<g[u].size();i++){ int v=g[u][i]; if(v==f) continue; dfs(v,u); if(degree[v]>2){ degree[u]--; ans+=(degree[v]-2)*2; } }}int main(){ int T;scanf("%d",&T); while(T--){ int n;scanf("%d",&n); for(int i=1;i<=n;i++) g[i].clear(); memset(degree,0,sizeof(degree)); for(int i=0;i<n-1;i++){ int a,b;scanf("%d%d",&a,&b); degree[a]++;degree[b]++; g[a].push_back(b); g[b].push_back(a); } ans=0; int root; for(int i=1;i<=n;i++){ if(degree[i]==1){ root=i;break; } } dfs(root,0); printf("%d\n",ans+1); }}
0 0
- hdu4714 Tree2cycle
- hdu4714 Tree2cycle
- hdu4714 Tree2cycle 树形DP
- hdu4714 Tree2cycle 树上乱搞
- 树形 DP hdu4714 Tree2cycle
- Tree2cycle hdu4714 贪心
- hdu4714 Tree2cycle(树形dp)
- hdu4714 Tree2cycle 使一棵树变成环最小代价
- hdu4714之树形DP
- hdu4714(树形dp)
- hdu4714 树形dp
- HDU 4714 Tree2cycle
- hdu 4714 Tree2cycle dp
- hdu 4714 Tree2cycle
- HDU 4714 Tree2cycle
- hdu 4714 Tree2cycle
- hdu 4714 Tree2cycle
- Hdu 4714 Tree2cycle - DFS
- 山东科技大学多校联合集训 H题 1008: Envy
- 软工视频总结
- 宏定义#define
- 机器学习中的代价函数
- 页面布局:左侧自适应,右侧固定
- hdu4714 Tree2cycle
- Android Framework学习(三)之SyetemServer进程启动解析
- Java工具类——日期转换
- python 模拟知乎登录
- 程序员之数据分析Python技术栈
- AarrayList源码阅读笔记
- hihocoder 1378 : 网络流二·最大流最小割定理
- Robot Framework
- Struts(2)Struts快速入门案例和使用filter配合Struts,解决中文乱码问题