题目描述

天空是那么蓝,空气是那么清新,草原是那么辽阔。
羊村的小羊正在玩游戏。他们用一个套环把2个小羊连在一起,组成了一个N个节点的无根树,各节点编号为1…N。正在玩得非常起劲的时候,狼来了!喜羊羊得知信息后马上赶到游戏现场,但时间紧迫,他只能打开其中一个羊的套环并把他带到安全区。但为了让其他连着套环的小羊行动方便,尽快的逃避狼的追逐,现在要求你删除其中的一个点(即喜羊羊带走的羊),使分割开的连通块中节点个数(即羊的个数)都不超过原来的一半多。

输入

第一行:一个整数N。
后面有N-1行:每行两个整数 X 和 Y,表示一个边连接的两个节点号。

输出

输出所有可能选择的点。如果有多个节点,按编号从小到大输出,每个一行。 如果找不到这样的点,输出一行:“NONE”.
样例输入 Copy
10
1 2
2 3
3 4
4 5
6 7
7 8
8 9
9 10
3 8

样例输出

3
8

提示

【样例说明】
删除3号或8号节点,则分枝最多有5个节点
【数据规模】
1 <= N <= 10,000

题解:

深度优先搜索
我们可以先建一棵树,然后再用dfsdfsdfs枚举一个节点i,如果i的子结点数量<=n/2<=n/2<=n/2,加入答案即可
Code:Code:Code:

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
struct node
{int v,nx;
}g[2*N];
int cnt,l[N],sz[N],ans[N];
int n;
void add(int u,int v)
{g[++cnt]=(node){v,l[u]};l[u]=cnt;g[++cnt]=(node){u,l[v]};l[v]=cnt;
}
void dfs(int u,int fa)
{bool b=1;sz[u]=1;for(int i=l[u];i;i=g[i].nx)if(g[i].v!=fa) {dfs(g[i].v,u);sz[u]+=sz[g[i].v];if (sz[g[i].v]>n/2) b=0;}if(n-sz[u]<=n/2&&b) ans[++cnt]=u;
}
int main()
{scanf("%d",&n);for(int i=1,u,v;i<n;i++) scanf("%d%d",&u,&v),add(u,v);cnt=0;dfs(1,-1);sort(ans+1,ans+cnt+1);for(int i=1;i<=cnt;i++) printf("%d\n",ans[i]);if(!cnt) printf("NONE");printf("\n");
}

狼来了 【dfs】【树】相关推荐

  1. 图论 ---- E. Pairs of Pairs(构造+无向图的dfs树的性质)

    题目链接 题目大意: 题目解法: 首先我们先对这个图求一个dfs树dfs树dfs树,那么对dfs树dfs树dfs树求树的直径rrr如果⌈n2⌉≤r\lceil\frac{n}{2}\rceil\leq ...

  2. 图论 ---- 构造DFS树的思想 K - Boomerangs Gym - 102001K

    题目链接 题目大意: 解题思路: 启发性思考首先我们先图切成dfs树,然后给图一个稳定结构之后,我们就可以去构造了 对于每个点我们从第底端开始构造每次把每次点的儿子两两匹配,如果是奇数个儿子就把多出来 ...

  3. Last Theorem CodeForces - 1325F(dfs树找最大环+思维)

    It's the year 5555. You have a graph, and you want to find a long cycle and a huge independent set, ...

  4. Codeforces Round #628 (Div. 2) F. Ehab‘s Last Theorem dfs树

    传送门 文章目录 题意: 思路: 题意: 给你个nnn个点mmm条边的图,可以选择完成以下两个任务中的一个: (1)(1)(1)找出大小恰好为n\sqrt nn​的一个独立集. (2)(2)(2)找出 ...

  5. 图论复习——dfs树,点双,边双,强连通分量

    知识点 dfs树 对一个图运行 dfs 算法,每个点uuu的父亲定义为第一次遍历uuu时的前驱结点,若无则为根. 无向图的 dfs树 没有横叉边. 有向图的 dfs树 横叉边方向唯一,总是从后访问的点 ...

  6. CF732F Tourist Reform(dfs树、边双连通图、tarjan)

    因为知道了算法tag,所以想到了正解: 先给出两个性质: 边双给边定向一定可以转为强连通图,此为最优解 树给边定向后R的最小值必为0 性质2证明如下: 设树有n个节点, 若R_min!=0, 则每点出 ...

  7. [XSY] 分割(dfs树)

    分割 题目相当于问 删掉两个点后 图是否仍然连通 割点问题,考虑用dfs树解决 设删去点u,v(dfn[v]<dfn[u]) 把 u, v 删去之后整棵树大概断成了几个部分: • v 上面到根的 ...

  8. [dfs树]「CEOI 2017」One-Way Streets

    不难的题.首先任意环上的边一定不是必经边,答案为B.我们随便搞一颗原图的dfs树,那么非树边,和每条飞树边覆盖的树上的链都是B.在树上打链覆盖的标记即可. 然后是对于每个x到y有路的限制,我们直接在x ...

  9. 【BZOJ1064】[Noi2008]假面舞会 DFS树

    [BZOJ1064][Noi2008]假面舞会 Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会.今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择 ...

  10. 【BZOJ4424】Cf19E Fairy DFS树

    [BZOJ4424]Cf19E Fairy Description 给定 n 个点,m 条边的无向图,可以从图中删除一条边,问删除哪些边可以使图变成一个二分图. Input 第 1 行包含两个整数 n ...

最新文章

  1. 谷歌量子霸权论文;13项NLP任务夺冠的小模型ALBERT
  2. 【Opencv实战】“一岁年龄一岁心,匆匆岁月不由人“这款年龄检测机等你来(附源码)
  3. 图像分割综述:FCN、U-Net、PSPNet、DeepLab
  4. 3pc在mysql的实现_面试官:了解分布式事务?讲讲你理解的2PC和3PC原理
  5. 利用shell命令操作Memcached
  6. SQL(基于MySQL)—— 常用查询语句
  7. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的电影在线售票系统
  8. LeetCode60:Permutation Sequence
  9. 2021-2025年中国窗帘行业市场供需与战略研究报告
  10. 孤读Paper——《FCOS: Fully Convolutional One-Stage Object Detection》
  11. insert into select from要注意什么_老外说put two and two together什么意思?是2+2?
  12. 【原创工具】蓝牙串口无线烧写STM32程序的工具,支持HC-05和CC2541两种蓝牙模块
  13. java实验指导书 eclipse_《Java语言程序设计实验指导书》实验指导书.doc
  14. 机器学习(周志华)学习笔记(二)
  15. 华为携西班牙电信于智利设立NB-IoT开放实验室
  16. hdoj 2122 Ice_cream’s world III【最小生成树】
  17. Mac苹果电脑桌面上的文件突然没了怎么办
  18. python中不等于用什么符号_python中表示不等于的符号是什么
  19. speedoffice如何在Word表格中插入行或列
  20. Hi,这是一个普通Android开发的2021小结

热门文章

  1. 焦距換算倍率(Focal length ratio)
  2. OGG FOR BIGDATA 安装(修正)
  3. FIPS 140-3与140-2的差异-2
  4. .ps格式的文件怎么打开?方法:通过GSview打开或将.ps转换成.pdf
  5. Matlab实现Q-criterion涡结构可视化
  6. 网络类型NAT3改NAT1 基于(联通)光猫桥接、路由器红米AX5、win10系统
  7. Java获取当前时间是本周、本月、本年的第几天
  8. python表示整数的点称为整点_礼行天下 仪动职场智慧树网课答案
  9. 想把语音转成文字,就这样做
  10. 互联网运营面试题_网站运营面试常见问题和答案