#P14731. [ICPC 2022 Seoul R] Parentheses Tree

[ICPC 2022 Seoul R] Parentheses Tree

Description

一棵有根有序树 TT 可以用一个匹配括号字符串 p(T)p(T) 来表示。字符串表示 p(T)p(T) 可以递归地定义。作为基本情况,仅包含单个节点的树用一对括号 ()() 表示。当一棵有根有序树 TT 由一个根节点和 kk 棵有序子树 T1,T2,...,TkT_1, T_2, ..., T_k 组成,且这些子树的根节点是根节点的子节点时,字符串表示 p(T)p(T) 定义如下:

p(T):=(+p(T1)+p(T2)++p(Tk)+)p(T) := ( + p(T_1) + p(T_2) + \cdots + p(T_k) + )

在上面的表达式中,运算符 ++ 表示两个字符串的连接。下图展示了两棵有根有序树的示例。其字符串表示 p(TL)p(T_L)p(TR)p(T_R) 分别为 ((())()())((())()())(()((()(()))()))(()((()(()))()))

:::align{center} :::

从根节点到叶节点的距离定义为从根节点出发到达叶节点需要遍历的边的数量。在上图中,根节点用蓝色标出,并显示了从根节点到所有叶节点的距离。对于树 TLT_LTRT_R,从根节点到所有叶节点的距离之和分别为 771010

给定一个表示唯一有根有序树的匹配括号字符串,请编写一个程序,输出从该树的根节点到所有叶节点的距离之和。

Input Format

你的程序需要从标准输入读取数据。输入包含一行,是一个表示唯一有根有序树的匹配括号字符串。输入中不包含括号以外的任何字符,且字符串长度至少为 22,最多不超过 10710^7

Output Format

你的程序需要向标准输出写入数据。输出恰好一行。该行应包含从该有根有序树的根节点到所有叶节点的距离之和。

((()()())())
7
(()((()(()))()))
10

Hint

翻译由 DeepSeek V3 完成