UVA 10410——Tree Reconstruction
题意:给定一颗树的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相关推荐
- Tree Reconstruction UVA - 10410
题目大意:给你一棵树的层次遍历和前序遍历,让你复原这棵树 思路:这是分类讨论的题,感觉挺难的 此题的关键,是要把已知的两次遍历配合起来. 考虑前序遍历中的前后两个点,分别记作A和B,那B点可能是A点的 ...
- UVa10410 Tree Reconstruction(bfs+dfs确定二叉树)
题意就是给你二叉树的bfs和dfs遍历,都是结点小的优先遍历 本来自己没做出来,不想写的,做了半天测试数据是对的,但是WA.因为看了一个大佬的解法,让我感慨万分,简洁而直接的解法,正确而清晰的思路,让 ...
- UVA - 548 Tree
输入一个二叉树的中序和后序遍历,请你输出一个叶子节点,该叶子节点到根的数值总和最小,且这个叶子是编号最小的那个. 输入: 您的程序将从输入文件中读取两行(直到文件结尾).第一行是树的中序遍历值序列,第 ...
- UVA 536——Tree Recovery
题意:给定一颗树的先根遍历和中根遍历,然后求后根遍历. 思路:先根遍历的第一个为root,然后找到root在中根的位置,进而递归左右儿子求解. code: #include <iostream& ...
- UVa 548 Tree(中序遍历+后序遍历)
给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小.如果有多解,该叶子本身的权应尽量小.输入中每两行表示一棵树,其中第一行为中序遍 ...
- 【ICPC-75】uva 112 Tree Summing
点击打开链接 题目意思:给定一个字符串,把字符串里面的数字建成一颗树,数字有可能是负号,所以这一题其实有很多可以学的,比如怎样输入会有多行,还有怎么建立一颗树,等等. 解题思路:我们用一个字符数组来存 ...
- UVa 112 - Tree Summing
题目:给你一个数和一棵树,问时钟是否存在根到叶子的路径使得路径上的数字和与已知数相等. 分析:递归.栈.因为除了最外边的树外,其他都有两颗子树,直接递归求解即可. 如果存在一棵子树成立,即返回成立.注 ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- UVa Online Judge 工具網站
UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...
最新文章
- R语言ggplot2可视化线图(line plot):当数据有中断、缺失时R不会将数据绘制为连续的线图、而是出现断点
- Read correction for non-uniform coverages 读校正非均匀覆盖
- c++中可以对类中私有成员中的静态变量初始化吗?
- python学习笔记四-列表
- Spring Framework Reference Documentation手册官网下载地址
- php7.1 aes 加密解密,PHP7.1中AES加密解密方法 mcrypt_module_open()替换方案
- 【最新版】Java速成路线(急于找工作!)
- 小米入住华为鸿蒙,华为鸿蒙开放,国产厂商集体失声?小米率先表态!
- ASP.NET 控制页概览
- eclipse修改编码方式
- [算法]数组排序之后相邻数的最大差值
- smith圆图重要性_smith圆图的理解
- 知识点二十五:启发式搜索算法——A*算法
- 【办公类-09】20220511word邮件合并功能插入照片(上下环绕照片)
- 7 一阶逻辑推理(11.23,11.30)
- 《别用面包钓鲔鱼》--读书流水账no3
- python数据库实体_python---使用get方法访问‘数据库’实体
- 巴铁兄弟加我微信,问如何通过写博客赚钱?
- 如果房贷被拒了怎么办?
- Java笔记14-Java高级编程部分-第八章-多线程