K:

  给你n个点以及n-1的条边, 问你最少要加多少条边,使得每两个点割去一条联通的边,还可以使的这两个点连通。

  有个一个结论,最少添加的边数为(叶子节点数+1)/ 2。

  我们可以只考虑叶子节点数应该怎么连了。按dfs序标号

  a0 连 an/2  , a2连an/2+1  ·····。如果是奇数个,就把an连a1。

  因为a0可以和别的节点连接,但是怎么样才是最好的,要每一个圈都尽量相交。

  

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <string>
  5. #include <algorithm>
  6. #include <cmath>
  7. #include <vector>
  8. #include <queue>
  9. #include <map>
  10. #include <stack>
  11. #include <set>
  12. using namespace std;
  13. typedef long long LL;
  14. typedef unsigned long long uLL;
  15. #define ms(a, b) memset(a, b, sizeof(a))
  16. #define pb push_back
  17. #define mp make_pair
  18. #define eps 0.0000000001
  19. #define IOS ios::sync_with_stdio(0);cin.tie(0);
  20. const LL INF = 0x3f3f3f3f3f3f3f3f;
  21. const int inf = 0x3f3f3f3f;
  22. const int maxn = 2e5+;
  23. const int mod = 1e9+;
  24. vector <int> T[maxn];
  25. int ans[maxn], cnt = ;
  26. void dfs(int fa, int x)
  27. {
  28. if(T[x].size()==) ans[cnt++] = x;
  29. for(int i = ;i<T[x].size();i++){
  30. if(T[x][i]!=fa)
  31. dfs(x, T[x][i]);
  32. }
  33. }
  34. int main()
  35. {
  36. #ifdef LOCAL
  37. freopen("input.txt", "r", stdin);
  38. // freopen("output.txt", "w", stdout);
  39. #endif
  40.  
  41. freopen("kingdom.in", "r", stdin);
  42. freopen("kingdom.out", "w", stdout);
  43.  
  44. int n, u, v;
  45. scanf("%d", &n);
  46. for(int i = ;i<n-;i++){
  47. scanf("%d%d", &u, &v);
  48. T[u].pb(v);
  49. T[v].pb(u);
  50. }
  51. dfs(-, );
  52. printf("%d\n", (cnt+)/);
  53. // for(int i = 0;i<cnt;i++){
  54. // printf("%d ", ans[i]);
  55. // }
  56. for(int i = ;i<cnt/;i++){
  57. printf("%d %d\n", ans[i], ans[cnt/+i]);
  58. }
  59. if(cnt&) printf("%d %d\n", ans[cnt-], ans[]);
  60. return ;
  61. }

  

ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)K Kingdom Roadmap的更多相关文章

  1. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)G GCD Guessing Game

    G: 要你去才Paul的年龄,Paul的年龄在1~n之间,你每猜一个Paul会告诉你,你猜的这个数和他年龄的gcd,问在最坏情况下最少要猜多少次. 题解: 什么是最坏情况,我们直到如果他的年龄是1的话 ...

  2. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)E Eve

    E: 模拟题,一开始有n个人(有男有女),对于子女来说线粒体DNA是继承母亲的.然后有m个操作(按时间顺序),一种就是给了父亲,母亲的ID,生了一个孩子(编号从n+1开始往下):还有一个就是 -x , ...

  3. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)B Binary Encoding

    B: 现在有一种新的2进制表示法,要你求出0~m-1的每个数的表示. 规则如下:n 是满足 m<=2n 最小数. 而0~m-1的数只能够用n-1个位和n个位来表示. 对于n个位表示的数来说不能有 ...

  4. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area

    A: 给你一个矩阵求'/' 和 '\' 围成的图形,简单签到题,有一些细节要考虑. 题解:一行一行的跑,遇到'/'和'\' 就加0.5, 在面积里面的'.' 就加1.用一个flag来判断是否在围住的图 ...

  5. ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbilisi, November 24, 2010

    ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbil ...

  6. 2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17)

    2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17) A 题意:有 n 个时刻 ...

  7. Editing 2011-2012 ACM-ICPC Northeastern European Regional Contest (NEERC 11)

    NEERC 11 *wiki链接[[https://acm.ecnu.edu.cn/wiki/index.php?title=2011-2012_ACM-ICPC_Northeastern_Europ ...

  8. 2016-2017 ACM-ICPC Northeastern European Regional Contest Problem E. Expect to Wait

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229509 时间限制:2s 空间限制:512MB 题目大意: 在一个车站中有若干人在队列中等待 ...

  9. 2012-2013 ACM-ICPC Northeastern European Regional Contest (NEERC 12)

    Problems     # Name     A Addictive Bubbles1 addictive.in / addictive.out 2 s, 256 MB    x438 B Blin ...

随机推荐

  1. 解决jenkins的Console Output中文乱码

    1.本地机器设置环境变量(设置后需要注销计算机才能生效) key: JAVA_TOOL_OPTIONS value:-Dfile.encoding=UTF- 2. 通过Jenkins全局设置的方式   ...

  2. lamp项目上线流程简述 (ubuntu16.04 )

    1  新建一个sudo用户,而不是直接用root操作 ①  新建用户可参考 https://www.cnblogs.com/bushuwei/p/10880182.html ②  赋予sudo权限: ...

  3. 吴恩达机器学习101:SVM优化目标

    1.为了描述SVM,需要从logistic回归开始进行学习,通过改变一些小的动作来进行支持向量机操作.在logistic回归中我们熟悉了这个假设函数以及右边的sigmoid函数,下式中z表示θ的转置乘 ...

  4. vue-cli常用插件安装教程

    1.安装sass npm i sass-loader node-sass --save-dev 2.安装stylus cnpm install stylus --save-dev cnpm insta ...

  5. 使用svn未响应卡死的几个原因,commit时checkout时

    1.commit 时 很可能是:检索文件内容过多导致,解决:不要在最外层文件夹目录下commit 2.checkout时 很可能是:地址错误

  6. python 解决cv2绘制中文乱码

    因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题, 因此使用PIL在图片上绘制添加中文,可以指定字体文件. 大体思路: OpenCV图片格式转换成PIL的图片格式: 使用PIL ...

  7. c# task笔记

    class Program { //创建Task任务的三种方式(无返回值) static void Main(string[] args) { //方法一 Task task1 = new Task( ...

  8. C++ 程序设计语言

    好记性不如烂笔头. 第六章 标准库给出了静态断言,形式类似如下: stastic_assert(A,S);//当A不为true时,把S作为一条编译器错误信息输出 其最重要的用途是为泛型编程中作为形参的 ...

  9. Qualcomm_Mobile_OpenCL.pdf 翻译-5-性能优化的概述

    这章提供了一个OpenCL应用程序优化的总体概述.更多的细节将会在接下来的章节中找到. 注意:OpenCL程序的优化是具有挑战性的.相比初始的程序开发工作,经常需要做更多的工作. 5.1 性能移植性 ...

  10. PAT Advanced 1048 Find Coins (25 分)

    Eva loves to collect coins from all over the universe, including some other planets like Mars. One d ...