九度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 ...
随机推荐
- DriverStore文件夹特别大,能删除吗?
DriverStore文件夹特别大,能删除吗? DriverStore\FileRepository文件夹特别大,能删除吗? C:\Windows\System32\DriverStore\FileR ...
- lodash 类型判断
1.isArray _.isArray(value) 检查 value 是否是 Array 类对象. 2.isElement _.isElement(value) 检查 value 是否是可能是 DO ...
- Python 的数据表示
一.常量.变量和对象 1.常量:是指在程序的执行过程中不变的量.如:1,2,3,4,……,true.false 也有一些包含在模块中的用符号表示的常量,常用的如math模块中的pi和e,如: > ...
- html 5 中的 6位 十六进制颜色码 代表的意思180313
人的眼睛看到的颜色有两种: ⒈ 一种是发光体发出的颜色,比如计算机显示器屏幕显示的颜色: ⒉ 另一种是物体本身不发光,而是反射的光产生 的颜色,比如看报纸和杂志上的颜色. 我们又知道任何颜色都是由 ...
- redis实践一些要注意的事项
不要放垃圾数据,及时清理无用数据实验性的数据和下线的业务数据及时删除; key尽量都设置过期时间对具有时效性的key设置过期时间,通过redis自身的过期key清理策略来降低过期key对于内存的占用, ...
- Java 扫描包下所有类(包括jar包)
package com.MyUtils.file; [java] view plain copy import java.io.File; import java.io.FileFilter; imp ...
- ThreadLocal使用方法
创建一个Bean,通过不同的线程对象设置Bean属性,保证各个线程Bean对象的独立性. /** * Created by IntelliJ IDEA. * User: leizhimin ...
- linux用户密码生成
linux账户保存在/etc/passwd,密码保存在/etc/shadow. 通过man 5 passwd,man 5 shadow可查看文件中各字段含义. encrypted password ...
- jQuery 库 - 特性
jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTM ...
- python 爬虫3 异常处理
1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的服务器 服务器不存在 在代码中,我们需要用try-except语句来包围并捕获相应的异常.下 ...