#P2829. How Many Free Dimensions?
How Many Free Dimensions?
Description
In calculating the outer product of vectors, existence of constraints usually makes it that not all the components of the product are independent of the others. For example, the outer product of two two-dimensional vectors A = (a1, a2) and B = (b1, b2), C = A × B = (c11, c12, c21, c22). If we set c12 = c21, then only three of the four components of C is independent, or C has three free dimensions.
Now we have k n-dimensional vectors A1, A2, …, Ak. The product of them is a vector of nk components Z = (zα) where α enumerates all possible subscripts i1i2…ik (1 ≤ ij ≤ n for all j s.t. 1 ≤ j ≤ k). We can then apply a rule of constraint of the form s1s2…sk=t1t2…tk to the subscripts. Here s1s2…sk and t1t2…tk are two strings consisting of the same set of lowercase letters. A letter appearing in one string will also appear in the other one and it can have multiple occurrences in a string. When a rule is applied, the letters in it are replaced by arbitrary integers between 1 and n (inclusive) provided that the same letters are replaced by the same integers and different letters are replaced by different integers. If a resulted string after replacements is p1p2…pk=q1q2…qk, let α be p1p2…pk and β be q1q2…qk, then we set zα = zβ. Given the number of vectors and their dimensions and a rule of constraint, you are required to compute the number of free dimensions of the product of the vectors.
Input
The input contains several test cases. Each test case consists of two lines followed by a blank one. On the first line there are two integers which are n and k in the order they appear. On the second line is a rule of constraint. Two zeroes on a separate line follow the last test case.
Output
For each test case, output one line containing the number of free dimensions of the product of vectors.
2 2
ij=ji
3 3
iij=jii
0 0
3
21
Hint
In the second test case in the sample input, the rule iij=jii represents the constraints z112 = z211, z113 = z311, z221 = z122, z223 = z322, z331 = z133 and z332 = z233.
You can safely assume that all calculations can be done with 64-bit integers.
Source
POJ Monthly--2006.05.28, Liang, Shaochi