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

回文树

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 443    Accepted Submission(s): 130


Problem Description
给定一棵$n$个点的树,任意两点之间有且仅有一条直接或间接路径。这些点编号依次为$1$到$n$,其中编号为$i$的点上有一个正整数$a_i$。你可以认为每个数$a_i$都是在$[1,n]$里等概率随机挑选的。

令$S(u,v)$表示在树上$u$到$v$的唯一最短路径上,按照离$u$从近到远依次考虑每个点,将它们上面的数字$a$按顺序写下连成的字符串。若一个字符串正着读和倒着读相等,则称它为回文串,比如1 2 1和1 3 3 1是回文串,但是1 21不是回文串。

请写一个程序,统计有多少个正整数对$(u,v)$满足$1\leq u\leq v\leq n$,且$S(u,v)$是回文串。
 

Input
第一行包含一个正整数$T(1\leq T\leq 20)$,表示测试数据的组数。

每组数据第一行包含一个正整数$n(1\leq n\leq 100000)$,表示点数。

第二行包含$n$个正整数$a_1,a_2,...,a_n(1\leq a_i\leq n)$,依次表示每个点上的数字。你可以认为每个数$a_i$都是在$[1,n]$里等概率随机挑选的。

接下来$n-1$行,每行两个正整数$u_i,v_i(1\leq u_i,v_i\leq n,u_i\neq v_i)$,表示一条连接$u_i$和$v_i$的双向树边。
 

Output
对于每组数据,输出一行一个整数,即满足条件的点对$(u,v)$的数量。
 

Sample Input
2 3 1 2 1 1 2 2 3 2 2 2 1 2
 

Sample Output
4 3
 

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-04-25 15:04:25, Gzip enabled