首页 > 试题广场 >

颜色交错路径计数

[编程题]颜色交错路径计数
  • 热度指数:473 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}小美有一棵由 n 个节点组成的树,每个节点被涂为红色或黑色。她想统计树中有多少条颜色交错的简单路径。
\hspace{15pt}路径是指任意两个节点之间的唯一简单路径,并且我们也将单个节点自身视为长度为 1 的路径。若一条路径上任意相邻的两个节点颜色不同,则称该路径为颜色交错的路径。
\hspace{15pt}请计算树中颜色交错的路径总数。

【名词解释】
\hspace{15pt}【树上的路径】从节点 u 到节点 v简单路径定义为从节点 u 出发,以节点 v 为终点,随意在树上走,不经过重复的点和边走出来的序列。可以证明,在树上,任意两个节点间有且仅有一条简单路径。

输入描述:
\hspace{15pt}第一行输入一个整数 n\ (1 \leqq n \leqq 2\times10^5),表示树的节点数量。
\hspace{15pt}接下来 n-1 行,每行输入两个整数 uv \ (1 \leqq u,v \leqq n;\ u \neq v),表示节点 uv 之间有一条无向边。保证输入构成一棵树。
\hspace{15pt}接下来一行,输入一个长度为 n 的字符串 s,仅由字符 \texttt{B}\texttt{R} 构成,其中 s_i=\texttt{B} 表示第 i 个节点为黑色;s_i=\texttt{R} 表示红色。


输出描述:
\hspace{15pt}输出一个整数,表示树中颜色交错的路径总数。
示例1

输入

6
1 2
2 3
3 4
4 5
3 6
BRBRBB

输出

16

说明

\hspace{15pt}这棵树共有 16 条颜色交错的路径(包括 6 条单节点路径、4 条长度为 2 的路径、3 条长度为 3 的路径、2 条长度为 4 的路径、1 条长度为 5 的路径)。
示例2

输入

3
1 2
2 3
BBB

输出

3

说明

\hspace{15pt}只有单节点路径满足颜色交错,共 3 条。
发表于 2025-08-11 22:38:41 回复(0)