UVA 10410 Tree Reconstruction
题意:
给定一个树的BFS和DFS,求这棵树。
分析:
拿dfs的序列,分成若干段,每一段相当一个子树,这样就可以利用bfs的序列去将dfs的序列分段,然后利用一个队列去存放每一段,不断求出子树即可。
代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn=1010;
vector<int>g[maxn];
int pos[maxn],dfs[maxn],n;
int main()
{
while(~scanf("%d",&n))
{
memset(pos,0,sizeof(pos));
memset(dfs,0,sizeof(dfs));
int k,p,q=0;
int i;
for(i=0;i<n;++i)
scanf("%d",&k),pos[k]=i,g[i].clear();
scanf("%d",&dfs[0]);
for(i=1;i<n;i++)
{
scanf("%d",&p);
//cout<<q<<endl;
while(q&&pos[p]<=pos[dfs[q]]+1)
--q;
//cout<<q<<endl;
g[dfs[q]-1].push_back(p);
dfs[++q]=p;
}
for(i=0;i<n;i++)
{
printf("%d:",i+1);
for(int j=0;j<g[i].size();++j)
printf(" %d",g[i][j]);
printf("\n");
}
}
}
UVA 10410 Tree Reconstruction的更多相关文章
- UVA - 10410 Tree Reconstruction (根据dfs序和bfs序恢复一颗树)
题意: 分析: 这题一开始完全没有思路, 一直没有找出规律. 参考了http://www.cnblogs.com/Wade-/p/6358859.html 和 http://www.cnblogs.c ...
- UVA - 10410 Tree Reconstruction(栈处理递归)
题目: 给出一棵树的BFS和DFS序列,输出这棵树中每个结点的子结点列表.BFS和DFS序列在生成的时候,当一个结点被扩展时,其所有子结点应该按照编号从小 到大的顺序访问. 思路: 一开始是想根据BF ...
- UVa 10410 树重建
Tree Reconstruction Problem Description You have just finished a compiler design homework question w ...
- UVA.548 Tree(二叉树 DFS)
UVA.548 Tree(二叉树 DFS) 题意分析 给出一棵树的中序遍历和后序遍历,从所有叶子节点中找到一个使得其到根节点的权值最小.若有多个,输出叶子节点本身权值小的那个节点. 先递归建树,然后D ...
- 【构造题 贪心】cf1041E. Tree Reconstruction
比赛时候还是太慢了……要是能做快点就能上分了 Monocarp has drawn a tree (an undirected connected acyclic graph) and then ha ...
- Aizu - 2564 Tree Reconstruction 并查集
Aizu - 2564 Tree Reconstruction 题意:一个有向图,要使得能确定每一条边的权值,要求是每个点的入权和出权相等,问你最少需要确定多少条边 思路:这题好像有一个定理之类的,对 ...
- E. Tree Reconstruction 解析(思維)
Codeforce 1041 E. Tree Reconstruction 解析(思維) 今天我們來看看CF1041E 題目連結 題目 略,請直接看原題 前言 一開始完全搞錯題目意思,還以為每次會刪除 ...
- 【习题 6-11 UVA - 10410】Tree Reconstruction
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 可以先确定当前这棵子树的dfs序的范围. 然后第一个元素肯定是这棵子树的根节点. 那么只要在这棵子树的范围里面枚举节点. 看看有没有 ...
- UVa 112 - Tree Summing(树的各路径求和,递归)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
随机推荐
- Js apply 方法 具体解释
Js apply方法具体解释 我在一開始看到javascript的函数apply和call时,很的模糊,看也看不懂,近期在网上看到一些文章对apply方法和call的一些演示样例,总算是看的有点眉目了 ...
- CSS清除浮动_清除float浮动
2.clear:both清除浮动为了统一样式,我们新建一个样式选择器CSS命名为“.clear”,并且对应选择器样式为“clear:both”,然后我们在父级“</div>”结束前加此di ...
- Hacker(四)----查看计算机的IP地址
计算机接入Internet后,Internet就会给该计算机分配一个IP地址,若要查看该IP地址,可以借助度娘(百度,google)来实现.输入"IP地址查询"关键字,即可查看当前 ...
- NET基础课--XML基础
id level是属性,title为子节点 接下来操作子节点 比较xml的处理方式: 1和3适合数据量小的时候.
- Android多项目依赖在Eclipse中无法关联源代码的问题解决 Ctril 点不进去的解决方法
1. 使用快捷键:Ctrl+shift+R,在弹出框中输入.classpath 找到被作为library引入的那个.classpath文件. 2.将kind="src" path ...
- pl_sql 报ora-12154 无法解析指定的连接标识符的问题
情况一:连接本地的没有问题,连接远程服务器的时候报以上错误.那么在本地客户端下的TNSNames.ora设置中配置你的远程服务器连接,本人的如下: //mestest是远程服务器名 //172.18. ...
- 转:说说JSON和JSONP
前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socke ...
- jQuery图片懒加载lazyload插件
http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/ js 模板引擎
- 使用Python管理Azure(1):基础配置
Azure提供了丰富的Python SDK来对Azure进行开发管理,包括使用Azure的开源框架在Azure上创建web应用程序,对Azure的虚拟机,存储等进行管理,本系类会简单介绍如何在ASM和 ...
- win7+64安装PLSQL Developer 32位
原因分析:在网上搜索了半天,主要原因是oci.dll是64位的,而PL/SQL developer只有32位的,在使用64位oci.dll文件时出错! 解决方案(最便捷):1.到oracle官网下载O ...