九度OJ 1359:大魏树遍历 (树)
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:299
解决:29
- 题目描述:
-
大魏是JOBDU技术组里最喜欢折腾的一个了,单反、骑车、改九度页面,当然还有YY prado。我们姑且先把这些看做是会享受生活的表现;但是有一点我们就不能忍了,他连遍历树都有一些不一样的要求:1. 对于给定的一棵树,他要求从根节点开始遍历完所有节点,相对于一般的节点遍历,他要求边的遍历,即每条边都要正好遍历过两次2. 除了对于边遍历的变态要求,他还对叶子节点的遍历序列有着特殊的要求,即会预先指定所有叶子节点的遍历先后顺序。这些要求是不是很BT? 实际上也还好了,仔细想想也能做出来的。

- 输入:
-
每个测试文件包含多个测试案例,每个测试案例包含三个部分:第一行为一个整数K,代表这棵树总的节点个数, K>=1并且K<=300。接下来是K – 1行,每行有两个整数,代表这棵树的K – 1条边。树节点的标号从1开始,且1代表根节点。最后一行为包含所有的叶子节点编号的一个整数序列, 代表大魏所指定的叶子节点的遍历顺序。
- 输出:
-
对于每个测试案例,若满足大魏规定条件的遍历序列存在,则输出这个序列,每两个节点之间由空格隔开,末尾没有空格。若不存在,则只需要输出一个-1。
- 样例输入:
-
3
1 2
2 3
3
6
1 2
1 3
2 4
4 5
4 6
5 3 6
- 样例输出:
-
1 2 3 2 1
-1
代码:
#include <stdio.h>
#include <string.h>
#define N 301
int n,head[N],li[N],ri[N];
int e,nx[N-1],to[N-1];
int vti[N],mk[N],ln;
int err,f1;
int Tsort(int rt)
{
int l=N,r=-1,ct=0,eg,peg,sn,es,pes;
if(head[rt]==0){
l=r=vti[rt];
ct=1;
}
else{
for(peg=0,eg=head[rt];eg;peg=eg,eg=nx[eg]){
sn=to[eg];
ct+=Tsort(sn);
if(err) return 0; for(pes=0,es=head[rt];li[to[es]]<li[sn];pes=es,es=nx[es]) ;
if(es!=eg){
nx[peg]=nx[eg];
nx[eg]=es;
if(pes!=0) nx[pes]=eg;
else head[rt]=eg;
eg=peg;
} if(li[sn]<l) l=li[sn];
if(ri[sn]>r) r=ri[sn];
}
}
if(r-l+1==ct){
li[rt]=l;
ri[rt]=r;
return ct;
}
else{
err=1;
return 0;
}
}
void printPT(int rt)
{
int eg;
if(f1) printf("%d",rt),f1=0;
else printf(" %d",rt);
if(head[rt]!=0){
for(eg=head[rt];eg;eg=nx[eg]){
printPT(to[eg]);
printf(" %d",rt);
}
}
}
int main()
{
int i,rt,sn,v;
while(scanf("%d",&n)!=EOF){
err=0; e=1; ln=n; f1=1;
memset(head,0,sizeof(head));
memset(mk,0,sizeof(mk));
mk[1]=1;
for(i=0;i<n-1;i++){
scanf("%d%d",&rt,&sn);
if(mk[sn]){v=sn;sn=rt;rt=v;}
to[e]=sn; nx[e]=head[rt]; head[rt]=e++;
if(mk[rt]==1) mk[rt]=2,ln--;
mk[sn]=1;
}
for(i=1;i<=ln;i++){
scanf("%d",&v);
vti[v]=i;
}
Tsort(1);
if(err) printf("-1");
else printPT(1);
printf("\n");
}
return 0;
} /**************************************************************
Problem: 1359
User: lovai
Language: C
Result: Accepted
Time:40 ms
Memory:916 kb
****************************************************************/
九度OJ 1359:大魏树遍历 (树)的更多相关文章
- 【九度OJ】题目1181:遍历链表 解题报告
[九度OJ]题目1181:遍历链表 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1181 题目描述: 建立一个升序链表并遍历输出. ...
- 【九度OJ】题目1201-二叉排序树
题目 建树过程是递归,"递归的思路不是很复杂",经过题目1078的训练,直接开始编码.提交及修改的过程告诉自己,这是一个错觉,对递归的理解还应该再进一步. 自己的实现 #inclu ...
- 【九度OJ】题目1078-二叉树遍历
题目 这道题和后面的两道题,题目1201和题目1009,主要内容是对递归的实现,在逻辑上,递归是容易理解的,这种实现方式和我们思考的方式是相吻合的.但是在转换为计算机语言时,要明确告知计算机应该从哪里 ...
- 九度oj 题目1184:二叉树遍历
题目描述: 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的先序遍历字符串:ABC##DE#G##F###其中“#”表示的是空格,空格字符代表空 ...
- 九度OJ 1172:哈夫曼树 (贪心)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6701 解决:2954 题目描述: 哈夫曼树,第一行输入一个数n,表示叶结点的个数.需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结 ...
- 九度OJ 1090:路径打印 (树、DFS)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1704 解决:314 题目描述: 给你一串路径,譬如: a\b\c a\d\e b\cst d\ 你把这些路径中蕴含的目录结构给画出来,子目 ...
- 九度oj 题目1088:剩下的树
题目描述: 有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L ...
- 九度oj 题目1078:二叉树遍历
题目1078:二叉树遍历 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5326 解决:3174 题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历 ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
随机推荐
- Excel中如何将时间戳转为时间?
Unix时间戳转换Excel时间? Excel中如何将时间戳转为时间? Excel默认不支持Unix格式时间戳,这在导入数据时十分不便.可以用以下公式将时间戳转换成Excel格式的时间: =(x+8* ...
- OpenGL基础图形编程(八)变换
八.OpenGL变换 OpenGL变换是本篇的重点内容,它包含计算机图形学中最主要的三维变换,即几何变换.投影变换.裁剪变换.视口变换,以及针对OpenGL的特殊变换概念理解和使用方法,如相机模拟.矩 ...
- ros下基于百度语音的,语音识别和语音合成
代码地址如下:http://www.demodashi.com/demo/13153.html 概述: 本demo是ros下基于百度语音的,语音识别和语音合成,能够实现文字转语音,语音转文字的功能. ...
- NodeJS on Nginx: 使用nginx反向代理处理静态页面
最近OurJS后台已经从纯node.js迁移到了Nginx+NodeJS上来了,感觉性能提升了不少,特与大家分享. Nginx ("engine x") 是一个高性能的 HTTP ...
- [DevExpress]XtraTabControl右键加入关闭当前页、关闭其它页、所有关闭的实现
private void xtraTabControl_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButton ...
- in App Purchases一个注意事项
在completeTransaction中通过transaction.originalTransaction.payment.productIdentifier得到的productIdentifier ...
- 170. Two Sum III - Data structure design【easy】
170. Two Sum III - Data structure design[easy] Design and implement a TwoSum class. It should suppor ...
- centos 启动 nginx
service nginx start https://jingyan.baidu.com/article/bad08e1ec2adc709c85121aa.html
- 解决Eclipse的dropins中svn插件不能加载的问题
在eclipse的dropins中我们将svn的插件放到里边重启我们的ecplise就能正常加载svn插件了,如下图 但是有时候我们删除了svn的项目之后有可能我们的eclipse就不能正常加载svn ...
- Java8 stream学习
Java8初体验(二)Stream语法详解 Java 8 flatMap示例 第一个Stream Demo IDEA里面写Stream有个坑 虽然java文件中没错,但是但编译的时候还是报错了, In ...