1. #include <bits/stdc++.h>
  2. #include <iostream>
  3. #include <queue>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <algorithm>
  7. #include <string>
  8. #include <math.h>
  9. #include <set>
  10. #include <map>
  11. #define MAXN 1000000+10
  12. #define INF 1000000000
  13. #define eps 10e-6
  14. #define ll long long
  15. using namespace std;
  16.  
  17. bool cmp(int a, int b)
  18. {
  19. return a > b;
  20. }
  21.  
  22. //*******无根树转为指定节点为根的有根树并输出每个节点的父亲节点***************************
  23.  
  24. vector<int> mp[MAXN]; //*****邻接表存储图
  25. int pre[MAXN]; //*****存储每个节点的父亲节点
  26.  
  27. void dfs(int u, int fa) //***形参分别表示当前节点和其父亲节点
  28. {
  29. int len=mp[u].size(); //*****当前节点的儿子节点的个数
  30. for(int i=; i<len; i++)
  31. {
  32. int v=mp[u][i]; //****选中当前节点的一个儿子节点作为下一个节点
  33. if(v!=fa) //****如果父亲节点的儿子不是是自己,则其不为叶子节点,继续搜索
  34. {
  35. dfs(v, pre[v]=u);
  36. }
  37. }
  38. }
  39.  
  40. int main(void)
  41. {
  42. std::ios::sync_with_stdio(false), cin.tie(), cout.tie();
  43. int n;
  44. cin >> n;
  45. for(int i=; i<n-; i++)
  46. {
  47. int x, y;
  48. cin >> x >> y;
  49. mp[x].push_back(y);
  50. mp[y].push_back(x);
  51. }
  52. int root;
  53. cin >> root; //****输入目标根节点
  54. pre[root]=-; //****根节点没有父亲节点
  55. dfs(root, -);
  56. for(int i=; i<n; i++)
  57. {
  58. if(pre[i]!=-)
  59. {
  60. cout << pre[i] << " ";
  61. }
  62. }
  63. cout << endl;
  64. return ;
  65. }
  66.  
  67. /***************************
  68. 输入样例:
  69. 8
  70. 0 1
  71. 0 2
  72. 0 3
  73. 1 4
  74. 1 5
  75. 5 6
  76. 5 7
  77. 1
  78. //*****************
  79. 输出样例:
  80. 1 0 0 1 1 5 5
  81. //*****************
  82. 即0节点的父亲节点为1;
  83. 2,3节点的父亲节点为0;
  84. 4,5节点的父亲节点为1;
  85. 7,8节点的父亲节点为5;
  86. *******************************/
    //******刘汝佳算法竞赛入门经典p197**

无根树转有根树(dfs,tree)的更多相关文章

  1. 再谈树---无根树转有根树( dfs搜索转化+fa数组记录父节点) *【模板】

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <vector> ...

  2. 树形dp|无根树转有根树|2015年蓝桥杯生命之树

    2015年蓝桥杯第十题--生命之树(无根树dfs) ①暴力解法:枚举子集(选点) + dfs判断连通性(题目要求连通)满足上面两个条件下找出最大值权值和 ②dfs无根树转有根树,递归找最优 先学习无根 ...

  3. UVaLive 3902 Network (无根树转有根树,贪心)

    题意:一个树形网络,叶子是客户端,其他的是服务器.现在只有一台服务器提供服务,使得不超k的客户端流畅,但是其他的就不行了, 现在要在其他结点上安装服务器,使得所有的客户端都能流畅,问最少要几台. 析: ...

  4. codeforces 29D Ant on the Tree (dfs,tree,最近公共祖先)

    D. Ant on the Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  5. Codeforces Round #321 (Div. 2)C(tree dfs)

    题意:给出一棵树,共有n个节点,其中根节点是Kefa的家,叶子是restaurant,a[i]....a[n]表示i节点是否有猫,问:Kefa要去restaurant并且不能连续经过m个有猫的节点有多 ...

  6. Codeforces Round #225 (Div. 2) E. Propagating tree dfs序+-线段树

    题目链接:点击传送 E. Propagating tree time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  7. [luogu P3787][新创无际夏日公开赛] 冰精冻西瓜 [树状数组][dfs序]

    题目背景 盛夏,冰之妖精琪露诺发现了一大片西瓜地,终于可以吃到美味的冻西瓜啦. 题目描述 琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地.这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有 ...

  8. [poj1741]Tree(点分治+容斥原理)

    题意:求树中点对距离<=k的无序点对个数. 解题关键:树上点分治,这个分治并没有传统分治的合并过程,只是分成各个小问题,并将各个小问题的答案相加即可,也就是每层的复杂度并不在合并的过程,是在每层 ...

  9. BZOJ1468: Tree & BZOJ3365: [Usaco2004 Feb]Distance Statistics 路程统计

    [传送门:BZOJ1468&BZOJ3365] 简要题意: 给出一棵n个点的树,和每条边的边权,求出有多少个点对的距离<=k 题解: 点分治模板题 点分治的主要步骤: 1.首先选取一个点 ...

随机推荐

  1. FadeTop – 定时休息提醒工具

    FadeTop 是款定时休息提醒工具,其特色是当设定时间到达时,将桌面渐变为指定的颜色,强制提醒但不影响桌面的任何操作 FadeTop is a visual break reminder for W ...

  2. BZOJ3083——遥远的国度

    1.题目大意:三个操作,换根,修改树上的某条路径,查询一个子树的最小值 2.分析:这个其实还是挺好做的,修改树上的某条路径,裸树剖,查询子树的最小值,这个是树剖满足dfs序 那么就是换根了,对吧,其实 ...

  3. iOS9 beta 请求出现App Transport Security has blocked a cleartext HTTP (http://)

    iOS9 beta 请求出现App Transport Security has blocked a cleartext HTTP (http://) http://www.bubuko.com/in ...

  4. Ucenter,Discuz

    http://www.zb7.com/discuz/   (详细资料网站) Discuz主要是配置前台的模板制作,在二次开发时. UCenter主要是客户端的数据库的链接.client/.

  5. 分享一个快速设置背景的js 自动获取背景图的长宽

    我来分享一个快速设置背景的js (需要jq支持!) 快速切图铺页面用---就是不需要手动输入背景图的长宽 自动获取背景图的长宽 : <div class="wrap"> ...

  6. 2016年10月24日--HTML常用标签

    body的属性: bgcolor                页面背景色 background             背景壁纸.图片 text                     文字颜色 t ...

  7. 通过Nginx和Nginx Plus阻止DDoS攻击

    分布式拒绝服务攻击(DDoS)指的是通过多台机器向一个服务或者网站发送大量看似合法的数据包使其网络阻塞.资源耗尽从而不能为正常用户提供正常服务的攻击手段.随着互联网带宽的增加和相关工具的不断发布,这种 ...

  8. 关闭CENTOS不必要的默认服务

    CentOS关闭服务的方法: 图形界面,运行ntsysv chkconfig –level 2345 服务名称 off 服務名稱 建議 說明 acpid 停用 Advanced Configurati ...

  9. jQuery工作原理

    jQuery的开篇声明里有一段非常重要的话:jQuery是为了改变javascript的编码方式而设计的.从这段话可以看出jQuery本身并不是UI组件库或其他的一般AJAX类库.jQuery改变ja ...

  10. Java总结(一):封装——Encapsulation

    官方定义:一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法.封装可以被认为是一个保护屏障,防止该类的代码和数 据被外部类定义的代码随机访问. 大白话定义:通过getter和setter方法访问私 ...