【CSP模拟赛】仔细的检查(树的重心&树hash)
题目描述 nodgd家里种了一棵树,有一天nodgd比较无聊,就把这棵树画在了一张纸上。另一天nodgd更无聊,就又画了一张。 这时nodgd发现,两次画的顺序是不一样的,这就导致了原本的某一个节点u0在第一幅图中编号为u1,在第二副图中编号为u2。 于是,nodgd决定检查一下他画出的两棵树到底是不是一样的。nodgd已经给每棵树的节点都从1到n进行了编号,即每棵树有n个节点。 如果存在一个1到n的排列p1,p2…pn,对于第一幅图中的任意一条边(i,j),在第二幅图中都能找到一条边(pi,pj),则认为这两幅图中的树是一样的。 输入格式 第一行一个整数n,表示节点的总数。 接下来n−1行,每行两个整数,表示第一幅图中的每一条边。 接下来n−1行,每行两个整数,表示第二幅图中的每一条边。 输出格式 如果两幅图的树是一样的,第一行输出”YES”,接下来1行输出一个1到n的排列p1,p2,……,pn,两个数之间用空格间隔。当多个排列都满足题意时,你可以随便输出一个。 如果两幅图的树是不一样的,只输出一行”NO”。 注意输出的时候不要加引号。 输入样例 3 1 2 2 3 1 3 3 2 输出样例 YES 1 3 2 提示 【样例解释1】 肉眼可见,1-2-3和1-3-2显然是一样的两棵树。不过这可能不是唯一的符合题意的排列。 数据范围:n<=100000 分析 正解好像是什么括号序列