bzoj3391[Usaco2004 Dec]Tree Cutting网络破坏*
bzoj3391[Usaco2004 Dec]Tree Cutting网络破坏
题意:
给一棵树,问去掉哪个点后可以使剩下的每个子树大小都小于等于节点总数的一半。n≤10000。
题解:
dfs的时候求一下子树大小,以当前节点的父节点为根节点的子树大小为n-以当前节点为根节点的子树大小。
代码:
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <queue> 5 #define inc(i,j,k) for(int i=j;i<=k;i++) 6 #define maxn 10010 7 using namespace std; 8 9 inline int read(){ 10 char ch=getchar(); int f=1,x=0; 11 while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();} 12 while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); 13 return f*x; 14 } 15 struct e{int t,n;}es[maxn*2]; int ess,g[maxn]; 16 void pe(int f,int t){ 17 es[++ess]=(e){t,g[f]}; g[f]=ess; es[++ess]=(e){f,g[t]}; g[t]=ess; 18 } 19 int sz[maxn],n,ans[maxn],tot; 20 void dfs(int x,int fa){ 21 int mx=0; sz[x]=1; for(int i=g[x];i;i=es[i].n)if(es[i].t!=fa){ 22 dfs(es[i].t,x); sz[x]+=sz[es[i].t]; mx=max(mx,sz[es[i].t]); 23 } 24 mx=max(mx,n-sz[x]); if(mx<=n/2)ans[++tot]=x; 25 } 26 int main(){ 27 n=read(); inc(i,1,n-1){int x=read(),y=read(); pe(x,y);} dfs(1,0); 28 if(!tot){printf("NONE"); return 0;} 29 sort(ans+1,ans+1+tot); inc(i,1,tot)printf("%d\n",ans[i]); return 0; 30 }
20161114
转载于:https://www.cnblogs.com/YuanZiming/p/6067148.html
bzoj3391[Usaco2004 Dec]Tree Cutting网络破坏*相关推荐
- bzoj 3391: [Usaco2004 Dec]Tree Cutting网络破坏
3391: [Usaco2004 Dec]Tree Cutting网络破坏 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 296 Solved: 2 ...
- BZOJ 3391: [Usaco2004 Dec]Tree Cutting网络破坏(搜索)
这道直接遍历一遍求出每个点的子节点数目就行了= = CODE: #include<cstdio> #include<iostream> #include<algorith ...
- 【BZOJ3387】[Usaco2004 Dec]Fence Obstacle Course栅栏行动 线段树
[BZOJ3387][Usaco2004 Dec]Fence Obstacle Course栅栏行动 Description 约翰建造了N(1≤N≤50000)个栅栏来与牛同乐.第i个栅栏的z坐标为[ ...
- Tree Cutting HDU - 5909
Tree Cutting HDU - 5909 题意: 一个无根树,n个点,n-1条边,每个节点有一个权值,一棵树的权值就是其节点(包含本身及其子节点)的权值的异或和:求价值为[0,m)的树有多少颗? ...
- bzoj 3388: [Usaco2004 Dec]Cow Ski Area雪场缆车(Tarjan)
3388: [Usaco2004 Dec]Cow Ski Area雪场缆车 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 108 Solved: 4 ...
- poj 2376 bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)
3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 462 Solved ...
- bzoj3390[Usaco2004 Dec]Bad Cowtractors牛的报复*
bzoj3390[Usaco2004 Dec]Bad Cowtractors牛的报复 题意: 最大生成树. 题解: 最大生成树. 代码: 1 #include <cstdio> 2 #in ...
- Tree Cutting POJ - 2378(树形DP)
题意:有n个谷仓有n-1条路连接,问最少删除哪几个点才能使得删除点后得到的连通图的加点数不大于n/2. 分析:求树的重心的变形题,poj3107的简单版,一遍dfs从叶子到根转移找出找到以每个节点为根 ...
- 【POJ - 2378】Tree Cutting(树形dp,树的重心变形)
题干: After Farmer John realized that Bessie had installed a "tree-shaped" network among his ...
最新文章
- 安防业内人士对云存储未来的发展充满信心
- linux c语言文件属性,Linux C获取文件属性
- 超图桌面版制作一幅简单专题图示例
- java自定义注解解析及自定义注解
- selenium使用js进行点击
- 一图尽览华为云数据库全套安全解决方案
- function 多个函数用一个_用递归函数和栈逆序一个栈
- shell基础之EOF的用法
- python dict()函数的奇异之处
- 《MLB棒球创造营》:走近棒球运动·匹兹堡海盗队
- 企业微信开发实战(三、OA审批之回调通知、获取审批单号、审批详情)
- 超好用的卸载软件 —— Geek
- win764位旗舰版的序列号(个人推荐可以使用可靠的破解工具)
- Python(TensorFlow框架)实现手写数字识别系统
- 菲波那切数列(剑指offer)---c语言
- 网站系统 群发“站内信”的实现
- 一喝到威士忌真是什么烦恼都忘了
- Revit 2015 API 的所有变化和新功能
- vc 6.0与mysql win10_vc 6.0官方下载win10-vc 6.0 win10 64位下载中文完整版-西西软件下载...
- 多视角探析贝塞尔曲线匀速化技术、实现及其应用