题意:给定一颗树的BFS和DFS,求这棵的每个节点。

思路:用栈模拟维护。对应的BFS为每个节点到根节点的距离,然后比较当前节点和栈顶节点与根的距离,如果当前节点大,则为栈顶节点的孩子,否则弹出继续比较。

code:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;const int INF=0x3fffffff;
const int inf=-INF;
const int N=1000005;
const int M=1005;
const int mod=1000000007;
const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x))
#define fr(i,s,n) for (int i=s;i<=n;i++)int v[M];
vector<int>p[M];
stack<int>s;void sol(int q)
{while (1){if (v[q]==2||v[q]>1+v[s.top()]){p[s.top()].push_back(q),s.push(q);break;}else s.pop();}
}
int main()
{int n,x;while (~scanf("%d",&n)&&n){fr(i,1,n) scanf("%d",&x),v[x]=i,p[i].clear();scanf("%d",&x); s.push(x);fr(i,1,n-1) {scanf("%d",&x);sol(x);}fr (i,1,n){printf("%d:",i);for (int j=0;j<p[i].size();j++)printf(" %d",p[i][j]);puts("");}while (!s.empty()) s.pop();}
}

UVA 10410——Tree Reconstruction相关推荐

  1. Tree Reconstruction UVA - 10410

    题目大意:给你一棵树的层次遍历和前序遍历,让你复原这棵树 思路:这是分类讨论的题,感觉挺难的 此题的关键,是要把已知的两次遍历配合起来. 考虑前序遍历中的前后两个点,分别记作A和B,那B点可能是A点的 ...

  2. UVa10410 Tree Reconstruction(bfs+dfs确定二叉树)

    题意就是给你二叉树的bfs和dfs遍历,都是结点小的优先遍历 本来自己没做出来,不想写的,做了半天测试数据是对的,但是WA.因为看了一个大佬的解法,让我感慨万分,简洁而直接的解法,正确而清晰的思路,让 ...

  3. UVA - 548 Tree

    输入一个二叉树的中序和后序遍历,请你输出一个叶子节点,该叶子节点到根的数值总和最小,且这个叶子是编号最小的那个. 输入: 您的程序将从输入文件中读取两行(直到文件结尾).第一行是树的中序遍历值序列,第 ...

  4. UVA 536——Tree Recovery

    题意:给定一颗树的先根遍历和中根遍历,然后求后根遍历. 思路:先根遍历的第一个为root,然后找到root在中根的位置,进而递归左右儿子求解. code: #include <iostream& ...

  5. UVa 548 Tree(中序遍历+后序遍历)

    给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小.如果有多解,该叶子本身的权应尽量小.输入中每两行表示一棵树,其中第一行为中序遍 ...

  6. 【ICPC-75】uva 112 Tree Summing

    点击打开链接 题目意思:给定一个字符串,把字符串里面的数字建成一颗树,数字有可能是负号,所以这一题其实有很多可以学的,比如怎样输入会有多行,还有怎么建立一颗树,等等. 解题思路:我们用一个字符数组来存 ...

  7. UVa 112 - Tree Summing

    题目:给你一个数和一棵树,问时钟是否存在根到叶子的路径使得路径上的数字和与已知数相等. 分析:递归.栈.因为除了最外边的树外,其他都有两颗子树,直接递归求解即可. 如果存在一棵子树成立,即返回成立.注 ...

  8. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  9. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

最新文章

  1. R语言ggplot2可视化线图(line plot):当数据有中断、缺失时R不会将数据绘制为连续的线图、而是出现断点
  2. Read correction for non-uniform coverages 读校正非均匀覆盖
  3. c++中可以对类中私有成员中的静态变量初始化吗?
  4. python学习笔记四-列表
  5. Spring Framework Reference Documentation手册官网下载地址
  6. php7.1 aes 加密解密,PHP7.1中AES加密解密方法 mcrypt_module_open()替换方案
  7. 【最新版】Java速成路线(急于找工作!)
  8. 小米入住华为鸿蒙,华为鸿蒙开放,国产厂商集体失声?小米率先表态!
  9. ASP.NET 控制页概览
  10. eclipse修改编码方式
  11. [算法]数组排序之后相邻数的最大差值
  12. smith圆图重要性_smith圆图的理解
  13. 知识点二十五:启发式搜索算法——A*算法
  14. 【办公类-09】20220511word邮件合并功能插入照片(上下环绕照片)
  15. 7 一阶逻辑推理(11.23,11.30)
  16. 《别用面包钓鲔鱼》--读书流水账no3
  17. python数据库实体_python---使用get方法访问‘数据库’实体
  18. 巴铁兄弟加我微信,问如何通过写博客赚钱?
  19. 如果房贷被拒了怎么办?
  20. Java笔记14-Java高级编程部分-第八章-多线程

热门文章

  1. Vue解析--如何应对面试官提问
  2. 轻轻松松看懂Spring AOP源码
  3. cf1207解题报告
  4. JQuery .net WebService 参数必须一致
  5. 深入c#的string类
  6. jquery jgrid filterToolBar beforeSearch 修改postData
  7. 深入探讨JS中的数组排序函数sort()和reverse()
  8. AngularJS 的常用特性(二)
  9. [转]粵語固有辭彙與漢語北方話辭彙對照
  10. 删除了注册表winsock项及winsock2项怎么办