F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

Quasi Binary Search Tree

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 344    Accepted Submission(s): 111


Problem Description
给你一个$n$个点的二叉树,每个点被标上了$1$到$n$中不同的标号。一棵树是伪二叉树当且仅当对于每个节点,它的左子树的所有节点的标号都小于它本身,且它的右子树的标号都大于它本身,或者它的左子树都大于它且它的右子树都小于它。

现在有一棵树,它的标号都被擦去了,问能否将其标上号使得这棵树是一个伪二叉树。如果有多解,输出字典序最小的解,即比较$1$号点的标号,再比较$2$号点的标号,依次类推。
 

Input
第一行一个正整数$T(T\leq 7.5\times 10^4)$表示数据组数。

对于每组数据,第一行一个正整数$n, (n\leq 10^5, \sum n\leq 2.5 \times 10^6)$。

接下来$n$每行两个整数$l_i, r_i$表示$i$号节点的左右儿子,如果不存在左儿子或者右儿子,那么对应的数字为$0$,存在唯一的节点不是其他所有点的儿子。
 

Output
对于每组数据,令$u$点的标号为$p_u$,那么输出$\sum_{u=1}^n (p_u\oplus u)*233^u$对$10^{9}+7$的值,这里的$\oplus$为异或符号。
 

Sample Input
1 5 0 0 0 0 0 4 2 0 1 3
 

Sample Output
114911413 样例解释 实际上答案应该为 (1,3,5,4,2)。
 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2024 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.000000(s) query 1, Server time : 2024-11-22 08:43:04, Gzip enabled