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网络破坏*相关推荐

  1. bzoj 3391: [Usaco2004 Dec]Tree Cutting网络破坏

    3391: [Usaco2004 Dec]Tree Cutting网络破坏 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 296  Solved: 2 ...

  2. BZOJ 3391: [Usaco2004 Dec]Tree Cutting网络破坏(搜索)

    这道直接遍历一遍求出每个点的子节点数目就行了= = CODE: #include<cstdio> #include<iostream> #include<algorith ...

  3. 【BZOJ3387】[Usaco2004 Dec]Fence Obstacle Course栅栏行动 线段树

    [BZOJ3387][Usaco2004 Dec]Fence Obstacle Course栅栏行动 Description 约翰建造了N(1≤N≤50000)个栅栏来与牛同乐.第i个栅栏的z坐标为[ ...

  4. Tree Cutting HDU - 5909

    Tree Cutting HDU - 5909 题意: 一个无根树,n个点,n-1条边,每个节点有一个权值,一棵树的权值就是其节点(包含本身及其子节点)的权值的异或和:求价值为[0,m)的树有多少颗? ...

  5. 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 ...

  6. poj 2376 bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)

    3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 462  Solved ...

  7. bzoj3390[Usaco2004 Dec]Bad Cowtractors牛的报复*

    bzoj3390[Usaco2004 Dec]Bad Cowtractors牛的报复 题意: 最大生成树. 题解: 最大生成树. 代码: 1 #include <cstdio> 2 #in ...

  8. Tree Cutting POJ - 2378(树形DP)

    题意:有n个谷仓有n-1条路连接,问最少删除哪几个点才能使得删除点后得到的连通图的加点数不大于n/2. 分析:求树的重心的变形题,poj3107的简单版,一遍dfs从叶子到根转移找出找到以每个节点为根 ...

  9. 【POJ - 2378】Tree Cutting(树形dp,树的重心变形)

    题干: After Farmer John realized that Bessie had installed a "tree-shaped" network among his ...

最新文章

  1. 安防业内人士对云存储未来的发展充满信心
  2. linux c语言文件属性,Linux C获取文件属性
  3. 超图桌面版制作一幅简单专题图示例
  4. java自定义注解解析及自定义注解
  5. selenium使用js进行点击
  6. 一图尽览华为云数据库全套安全解决方案
  7. function 多个函数用一个_用递归函数和栈逆序一个栈
  8. shell基础之EOF的用法
  9. python dict()函数的奇异之处
  10. 《MLB棒球创造营》:走近棒球运动·匹兹堡海盗队
  11. 企业微信开发实战(三、OA审批之回调通知、获取审批单号、审批详情)
  12. 超好用的卸载软件 —— Geek
  13. win764位旗舰版的序列号(个人推荐可以使用可靠的破解工具)
  14. Python(TensorFlow框架)实现手写数字识别系统
  15. 菲波那切数列(剑指offer)---c语言
  16. 网站系统 群发“站内信”的实现
  17. 一喝到威士忌真是什么烦恼都忘了
  18. Revit 2015 API 的所有变化和新功能
  19. vc 6.0与mysql win10_vc 6.0官方下载win10-vc 6.0 win10 64位下载中文完整版-西西软件下载...
  20. 多视角探析贝塞尔曲线匀速化技术、实现及其应用

热门文章

  1. CAD如何转换?一招在线免费将CAD转成多种格式
  2. 教你怎样用python进行语音识别
  3. 产业洞察 | 云徙VS数澜,同期的峰会不同的发展方向
  4. 关于在neoshine linux下使用电视卡遇到的问题和总结
  5. Gmesh的网格剖分模块
  6. 《密室逃生》将映 六人密室游戏成搏命赌局
  7. 【Vue】Vue 中如何点击跳转页面
  8. git远程外网地址变内网怎么破(ssh本地端口转发)
  9. 达人评测 i3-1315U、i5-1335U 和 i7-1355U选哪个 酷睿i31315U、i51335U 和 i71355U对比
  10. 什么是kettle?