精简机构

提交数: 8, 通过率: 12.5%, 平均分: 41.25

题目描述:

        给你一个部的组织结构图,每个公务员只有一个上级,最多有3个下级(包括0个)。

        部长们没有上级,最多只有3个下级,同一级别的下级之间都是平等的,没有级别大小之分。一个部门包括一个领导和他的下级、他的下级的下级等等。有两种特殊情况:由部长开始的所有人构成的部门和只有一个人没有任何下属的部门。部门的深度是由部门官员连接起来的一个链X1,X2,……,Xd,其中,对每个1<=i<=d,Xi是Xi+1的上级,只有一个人的部门的深度为1。

       两个部门A和B的结构完全相同是指对于部门A的每个官员X都有部门B的官员X'与之对应;反之,对于部门B的每个官员X'都有部门A的官员X与之对应。特别地,对于所有的官员X和Y;X是Y的上级当且仅当X'(相对于官员X)是Y'(相对于官员Y)的上级。如果部门A和部门B结构相同,那么两部门的领导相对应,人数相等。

       在下图中,部门A和部门B结构相同,而部门C的结构与部门A、B不同。

       你的任务就是确定所有深度不同的结构部门的数目,换句话说,你必须提供这样一个序列n1,n2,……,nd,d是部门的深度,对每个i,包含深度为i的完全不同的结构部门的数目。

1522316642671417138.png

输入格式:

输入只有一行,用下面的符号形式(广义表形式,见输入样例)描述该组织结构,每个部门形如(X1……Xk),1<=k<=3,表示该领导的下属个数,Xi代表了他们的部门,只有一个人的部门形如(),所有的符号描述了该部。该部最多有1,000,000个公务员。

输出格式:

输出应该包括d行,d是该部精简后的尝试,第i行包含深度为i的不同部门的数目。

样例输入:

(((())())((()())(()()()))(()(())))

样例输出:

1
3
2
1
时间限制: 1000ms
空间限制: 256MB