uva 10410 树重建
来源:互联网 发布:生产成本管控数据来源 编辑:程序博客网 时间:2024/06/06 00:58
题目大意:给定一个树的BFS和DFS,求这棵树。
解题思路:用栈维护即可。对应BFS序列映射出了每个节点和根节点的距离,遍历dfs序列,对当前节点和栈顶节点比较,如果该节点距离根节点更远,则说明该节点为栈顶节点个孩子节点,则记录后将节点放入栈中。否则弹掉栈顶元素继续比较。需要注意一点,即当元素与栈顶元素的距离值大1的时候要视为相等,因为它们属于兄弟节点
// Created by Chenhongwei in 2015.// Copyright (c) 2015 Chenhongwei. All rights reserved.#include"iostream"#include"cstdio"#include"cstdlib"#include"cstring"#include"climits"#include"queue"#include"cmath"#include"map"#include"set"#include"stack"#include"vector"#include"sstream"#include"algorithm"using namespace std;typedef long long ll;int p[1010],n;vector<int>c[1010];int main(){//ios::sync_with_stdio(false);// freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);while(cin>>n&&n){int tmp;for(int i=1;i<=n;i++){cin>>tmp;p[tmp]=i;}int root;cin>>root;stack<int>q;q.push(root);for(int i=1;i<n;i++){cin>>tmp;while(1){int t=q.top();if(t==root||p[t]+1<p[tmp]){c[t].push_back(tmp);q.push(tmp);break;}else q.pop();}}for(int i=1;i<=n;i++){cout<<i<<':';for(int j=0;j<c[i].size();j++)cout<<' '<<c[i][j];cout<<endl;c[i].clear();}}return 0;}
0 0
- uva 10410 树重建
- 习题6-11 树重建 UVa 10410 *
- uva-536 二叉树重建
- 习题6-11 树重建(Tree Reconstruction, UVa 10410)
- UVA 536 (二叉树重建 13.08.17)
- UVa 536 Tree Recobery 二叉树重建
- uva 536 Tree Recovery(二叉树重建)
- 二叉树重建(uva 536)
- UVA 536 Tree Recovery 二叉树重建(重建二叉树+DFS)
- UVA 548 (树的重建 以及遍历 13.08.19)
- UVa 548 - Tree 二叉树的重建与遍历
- UVA 548(二叉树重建与遍历)
- 习题6-3 二叉树的重建 UVa 536
- 习题6-3 UVA 536 Tree Recovery 二叉树重建
- UVA 536 - Tree Recovery(二叉树重建)
- UVa 11234 Expressions (二叉树重建&由叶往根的层次遍历)
- UVa-536 习题6-3 二叉树重建(Tree Recovery,ULM 1997)
- 习题6-3 二叉树重建(Tree Recovery, ULM 1997, UVa 536)
- 开源中国源码学习(八)——枚举类
- android中对Bitmap图片设置任意角为圆角
- JAVA基础之复用类
- 常见开源产品epoll网络事件模型分析(附200万QPS实现长连接echo server方案)
- redis实现有序的消息队列
- uva 10410 树重建
- 使用Swift去掉字符串中的空格
- gridcontrol无数据自定义显示及滚动至底部翻页
- 腾讯2015研发笔试大题
- POJ 2763 Housewife Wind 树链剖分
- 学习资源分享,想了解某个协议的基础知识可以去H3C的网站学习,挺好~~
- eclipse为Android应用程序APK生成的私钥文件在哪里?
- Freeland团队暑期实践有感
- mysql出现权限问题无法创建新数据库&启动mysql失败问题,问题解决