题目链接:点击查看

题目大意:给出一棵无根树,问能否选择数量最少的链,使得所有的路径都被覆盖到

题目分析:读完题后不难看出,假设叶子结点的个数为 x,那么答案就是 x / 2 向上取整

然后说结论,dfs序依次拿出叶子结点后,第 i 个叶子结点和第 i + x/2 个匹配就可以了,证明如下:

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=2e5+100;vector<int>node[N],ans;void dfs(int u,int fa)
{if(node[u].size()==1)ans.push_back(u);for(auto v:node[u]){if(v==fa)continue;dfs(v,u);}
}int main()
{
#ifndef ONLINE_JUDGE
//  freopen("input.txt","r",stdin);
//  freopen("output.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int n;scanf("%d",&n);for(int i=1;i<n;i++){int u,v;scanf("%d%d",&u,&v);node[u].push_back(v);node[v].push_back(u);}int root=1;while(node[root].size()==1)root++;dfs(root,-1);int sz=ans.size(),cnt=(sz+1)/2;printf("%d\n",cnt);for(int i=0;i<cnt;i++)printf("%d %d\n",ans[i],ans[(i+sz/2)%sz]);return 0;
}

牛客多校2 - Cover the Tree(dfs序)相关推荐

  1. 2021牛客多校7 - xay loves trees(dfs序+主席树-标记永久化)

    题目链接:点击查看 题目大意:给出两棵以点 111 为根节点的有根树,现在要求满足条件的最大集合: 在第一棵树中,集合内的任意两个点都必须满足祖先关系,即 uuu 是 vvv 的祖先或 vvv 是 u ...

  2. 2019牛客多校第一场

    2019牛客多校第一场 题号 题目 知识点 A Monotonic Matrix B Symmetric Matrix C Fluorescent 2 D Two Graphs E Removal F ...

  3. 2020 牛客多校第一场

    2020 牛客多校第一场 A. B-Suffix Array 后缀数组的思想:倍增+桶排序的方式找出一串连续序列后缀的大小.虽说正常使用的时候都是字典序,但是只要修改排序方式,也能够达到一个类似的&q ...

  4. 牛客多校三 B Black and white

    牛客多校三 B Black and white 在n*m的棋盘上,每个格子有一个数,初始可以选一定的格子标记为黑色,在任意四个形如(i1, j1)(i1, j2)(i2, j1)(i2, j2)的格子 ...

  5. LCS(2021牛客多校4)

    LCS(2021牛客多校4) 题意: 让你构造三个字符串s1,s2,s3,长度均为n,要求LCS(s1,s2)=a,LCS(s2,s3)=b,LCS(s1,s3)=c 题解: 先考虑三个串互相LCS为 ...

  6. 24dian(牛客多校第三场)

    24dian(牛客多校第三场) 题意: 给你n张牌,每张牌的大小为1 ~ 13,问这些牌与加减乘除任意组合(可以使用括号),且但所有的有效解在计算过程中都涉及到分数,即非整数,能否组成答案m,如果可以 ...

  7. 2018年牛客多校算法寒假训练营练习比赛(第一场)C. 六子冲

    2018年牛客多校算法寒假训练营练习比赛(第一场)C. 六子冲 题目链接 做法:模拟即可 #include <bits/stdc++.h> #define P pair<int,in ...

  8. 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数

    目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...

  9. 2022牛客多校(十)

    2022牛客多校(十) 一.比赛小结 比赛链接:"蔚来杯"2022牛客暑期多校训练营10 二.题目分析及解法(基础题) F.Shannon Switching Game? 题目链接 ...

最新文章

  1. C语言实现傅里叶变换函数dft,idft,fft,ifft
  2. jvm误区--动态对象年龄判定
  3. 利用 Arthas 精准定位 Java 应用 CPU 负载过高问题
  4. mft文件记录属性头包括_NTFS 文件系统基础知识
  5. OpenHarmony3.0 编译烧录
  6. 英伟达吞并ARM的交易计划失败!
  7. php开发工具 知乎,一个微信小程序版知乎实例分享
  8. 让聊天机器人来填平技术鸿沟吧!
  9. CF755F PolandBall and Gifts
  10. 烽火2640路由器命令行手册-14-桥接配置命令
  11. 预言机 - 区块链的触角
  12. oracle乘法运算,乘法运算
  13. SGU133 Border
  14. 真题丨2018 年 7 月 28 日贵州省遵义市播州区事业单位面试真题(综合岗)
  15. 再回首 --- 零点伤感
  16. 百度知道api使用经验
  17. 交易的流动——从钱包到区块链网络
  18. 《信号与系统》示例1.单位阶跃信号的matlab实现
  19. 密集预测/Dense Prediction
  20. 墨奇科技博客 | 理解度量学习的新姿势

热门文章

  1. arcengine根据属性高亮显示图像_新品发布艺卓推出300万像素彩色医疗显示器RX360...
  2. MySQL高级 - SQL优化 - 索引提示
  3. 四种方式下创建线程启动的区别
  4. log4j2 无垃圾模式
  5. springboot的自动配置原理
  6. tomcat_安装卸载启动
  7. ZooKeeper快速入门
  8. smartupload 路径不存在_洞悉复杂金融场景,覆盖完备测试路径
  9. 2d shader unity 阴影_Unity中实现2D光照系统
  10. ubuntu18.04 VirtualBox 开启虚拟机出错 Kernel driver not installed (rc=-1908)