Problem Statement
There are N rooms in Maki's new house. The rooms are numbered from 0 to N-1. Some pairs of rooms are connected by bidirectional passages. The passages have the topology of a tree. That is, there are exactly N-1 of them and it is possible to go from any room to any other room by following some sequence of passages.
You are given two
Niko is helping Maki move into the new house. Maki has exactly N pieces of furniture. The pieces are numbered from 0 to N-1. Niko will carry them into the house in this order. Each piece of furniture must be placed into a different room. Maki does not care which piece goes where, each of the N! permutations is allowed.
However, not all of those N! permutations are actually possible. This is because the furniture is large. As soon as a room contains a piece of furniture, it is impossible to move other pieces through this room. Thus, Niko must place the furniture carefully. Formally, she can place a new piece of furniture into the room x if and only if all rooms on the (unique) path between s and x, including s and x, are still empty. Niko is smart and she will always place the furniture in such a way that she never gets stuck. Thus, at the end each of Maki's rooms will contain exactly one piece of furniture.
Calculate and return the number of ways how the furniture can be arranged in Maki's house at the end.
Definition
- Class:
- OneEntrance
- Method:
- count
- Parameters:
- int[], int[], int
- Returns:
- int
- Method signature:
- int count(int[] a, int[] b, int s)
- (be sure your method is public)
Constraints
- N will be between 1 and 9, inclusive.
- a and b will contain exactly N-1 elements each.
- Each element of a and b will be between 0 and N-1, inclusive.
- The graph described by a and b will be a tree.
- s will be between 0 and N-1, inclusive.
Examples
{0, 1, 2}
{1, 2, 3}
0
Returns: 1
There is only one solution: Niko must fill the rooms in the order {3,2,1,0}. Thus, piece number 0 will end in room 3, piece number 1 in room 2, and so on.
{0, 1, 2}
{1, 2, 3}
2
Returns: 3
In this case Niko can choose one of three orders: {3,0,1,2}, {0,3,1,2}, or {0,1,3,2}. Note that the room with the entrance (in this case, room 2) always gets the last piece of furniture.
{0, 0, 0, 0}
{1, 2, 3, 4}
0
Returns: 24
{7, 4, 1, 0, 1, 1, 6, 0}
{6, 6, 2, 5, 0, 3, 8, 4}
4
Returns: 896
{}
{}
0
Returns: 1
Maki's new house has only one room.
{6,8,0,7,4,4,1,3}
{0,3,5,0,6,2,4,6}
3
Returns: 640
{6,1,8,2,0,6,3,1}
{0,6,6,5,7,5,4,3}
0
Returns: 480
{4,3,8,0,3,1,5,2}
{0,8,7,6,0,0,1,3}
0
Returns: 2520
{4,2,6,6,2,0,8,7}
{2,5,1,7,3,2,7,3}
0
Returns: 126
{2,8,8,4,8,6,1,8}
{3,0,4,5,2,7,8,7}
0
Returns: 630
{6,6,7,7,6,8,4,5}
{2,0,3,6,1,2,8,7}
6
Returns: 2240
{0,4,4,7,3,3,4,5}
{3,6,1,8,7,2,3,7}
5
Returns: 280
{2,3,4,1,8,6,1,1}
{8,5,5,4,0,4,8,7}
0
Returns: 105
{7,6,2,1,1,2,4,1}
{1,3,0,8,4,6,5,0}
1
Returns: 840
{8,5,0,0,2,1,2,4}
{3,8,8,7,5,2,6,8}
1
Returns: 84
{2,0,1,6,7,0,5,1}
{8,7,3,4,4,2,4,6}
3
Returns: 5
{7,0,1,2,6,5,0,5}
{4,6,8,8,5,8,4,3}
8
Returns: 280
{6,3,6,4,6,5,1,8}
{2,6,0,7,4,7,6,7}
5
Returns: 168
{6,3,0,8,8,1,0,4}
{1,1,5,3,2,7,8,2}
2
Returns: 240
{6,1,4,2,7,5,8,0}
{1,5,2,0,1,8,3,1}
0
Returns: 560
{4,1,5,0,5,7,8,1}
{2,2,3,8,8,4,1,6}
5
Returns: 192
{1,3,2,0,0,6,8,0}
{5,0,1,6,4,5,2,7}
5
Returns: 336
{7,3,6,2,3,4,2,6}
{1,2,3,1,4,5,8,0}
5
Returns: 45
{8,6,4,2,5,0,7,3}
{4,0,0,4,0,1,8,7}
1
Returns: 168
{7,8,0,4,7,4,1,3}
{5,1,7,6,4,8,2,2}
1
Returns: 224
{8,1,0,3,3,3,7,0}
{5,5,5,8,4,7,2,6}
8
Returns: 630
{5,4,6,6,0,2,4,7}
{0,6,8,3,6,8,1,0}
0
Returns: 1680
{6,6,2,1,7,0,8,1}
{3,2,8,5,2,2,4,6}
2
Returns: 2520
{7,4,6,8,3,2,5,8}
{2,1,5,1,5,0,8,0}
8
Returns: 1120
{5,6,3,3,5,0,8,1}
{6,8,2,4,0,7,3,5}
8
Returns: 336
{5,1,6,1,3,2,1,8}
{1,4,5,0,4,4,7,3}
6
Returns: 90
{6,6,0,6,4,6,3,8}
{7,1,5,5,6,8,6,2}
5
Returns: 2880
{8,8,7,2,7,8,5,1}
{3,6,5,5,0,7,1,4}
4
Returns: 48
{8,0,5,8,1,5,1,1}
{4,7,4,3,0,6,4,2}
4
Returns: 1260
{6,0,7,0,4,5,6,2}
{5,3,1,1,3,8,1,1}
6
Returns: 560
{0,7,7,4,2,6,1,4}
{7,8,5,8,5,8,7,3}
7
Returns: 2520
{8,2,6,0,7,3,5,1}
{0,4,8,4,2,0,3,0}
3
Returns: 480
{3,8,8,6,5,2,8,7}
{7,0,6,1,4,4,2,2}
3
Returns: 45
{2,4,1,8,5,6,3,2}
{0,2,0,7,8,8,7,6}
2
Returns: 504
{0,6,5,4,7,8,0,6}
{1,7,3,3,2,5,6,5}
3
Returns: 288
{0,1,3,3,6,3,0,6}
{4,4,2,7,3,8,2,5}
6
Returns: 240
{4,2,0,8,4,3,8,1}
{7,1,3,6,8,4,5,6}
1
Returns: 120
{0,8,0,1,0,3,3,5}
{2,1,7,6,4,7,5,8}
6
Returns: 2
{8,1,4,6,4,7,6,2}
{3,4,3,3,5,0,0,5}
4
Returns: 672
{4,8,2,8,0,4,5,3}
{1,6,1,2,1,7,2,8}
5
Returns: 210
{6,4,6,6,6,6,2,0}
{1,5,8,3,5,7,8,8}
8
Returns: 3360
{7,7,5,8,0,5,2,2}
{1,4,6,1,8,2,8,3}
6
Returns: 24
{4,0,0,6,1,1,0,6}
{3,8,7,5,0,3,2,0}
2
Returns: 420
{2,8,2,4,4,3,5,4}
{7,2,4,6,1,4,2,0}
6
Returns: 1260
{6,6,5,2,4,7,3,6}
{5,8,1,8,8,8,8,0}
0
Returns: 504
{1,8,3,1,6,4,3,7}
{5,5,2,7,1,1,0,3}
5
Returns: 480
{7,8,2,6,3,0,2,8}
{2,0,0,1,4,1,3,5}
0
Returns: 1260
{5,6,7,4,6,8,3,8}
{1,4,4,2,1,6,8,0}
4
Returns: 1120
{7,0,3,6,5,6,7,7}
{1,1,7,4,8,1,5,2}
3
Returns: 315
{3,0,7,0,5,8,1,5}
{1,7,2,1,6,4,4,1}
0
Returns: 840
{4,6,3,6,1,2}
{1,4,2,0,5,5}
3
Returns: 1
{1,3,1,0}
{4,4,2,2}
3
Returns: 1
{6,4,5,0,2,4}
{3,0,4,3,4,1}
0
Returns: 90
{0,3,1}
{1,1,2}
1
Returns: 6
{0,4,3,4,3}
{5,2,4,0,1}
0
Returns: 15
{3,2,3}
{2,1,0}
1
Returns: 1
{4,2,3,4,3}
{0,4,2,5,1}
0
Returns: 4
{1}
{0}
1
Returns: 1
{3,0,2,1,1}
{5,5,4,4,3}
2
Returns: 1
{0,3,2,1}
{4,0,3,4}
4
Returns: 4
{0,3,2}
{3,1,1}
1
Returns: 3
{6,4,3,1,4,0}
{2,0,4,0,6,5}
5
Returns: 15
{4,2,3,1}
{0,3,4,4}
4
Returns: 12
{2,0,1,5,3}
{0,4,5,0,0}
5
Returns: 30
{1,0,0,4,1,6}
{3,2,5,1,0,5}
4
Returns: 15
{2,2,0}
{1,0,3}
0
Returns: 3
{0,1,2}
{1,3,0}
0
Returns: 3
{3,3,3,3,4,5}
{2,1,5,6,0,0}
5
Returns: 90
{2,2,1}
{3,0,3}
1
Returns: 1
{1,1,0}
{2,3,2}
2
Returns: 3
{5,0,1,6,2,2}
{2,3,4,4,1,3}
0
Returns: 4
{1,0,4,1}
{3,3,1,2}
1
Returns: 12
{4,1,6,1,2,5}
{3,0,4,4,4,4}
6
Returns: 60
{2,0,2}
{3,2,1}
3
Returns: 2
{4,2,1,1,0}
{1,3,3,5,3}
4
Returns: 8
{6,3,6,2,5,1}
{2,0,5,3,4,6}
5
Returns: 24
{0,1}
{2,2}
0
Returns: 1
{4,3,1,2}
{3,0,0,0}
0
Returns: 12
{1,0,3,4}
{4,2,4,2}
1
Returns: 3
{2,0,2,1,5}
{0,5,4,0,3}
2
Returns: 15
{2,3,2,5,0}
{1,4,3,2,5}
5
Returns: 15
{5,3,5,1,3,2}
{6,6,0,0,2,4}
6
Returns: 20
{3,1,2,1,5}
{5,4,4,5,0}
5
Returns: 20
{3,4,2,1,2}
{5,5,0,5,4}
1
Returns: 4
{0,1,0,3,4}
{5,2,2,4,1}
1
Returns: 10
{1,4,1,2}
{0,0,3,1}
3
Returns: 3
{3,2,0,3,5}
{1,4,3,2,0}
2
Returns: 15
{5,0,5,3,4}
{1,5,4,1,2}
1
Returns: 15
{1,2,3}
{0,0,2}
1
Returns: 1
{3,0,2}
{2,1,1}
2
Returns: 3
{4,5,5,2,0,0}
{1,3,4,5,6,5}
2
Returns: 30
{0,2,3}
{1,1,1}
3
Returns: 2
{1,5,4,0,4}
{4,3,5,5,2}
4
Returns: 40
{0,0}
{1,2}
1
Returns: 1
{2,0}
{1,1}
2
Returns: 1
{0,0,0,0,0,0,0,0}
{1,2,3,4,5,6,7,8}
0
Returns: 40320
{0,1,2,3,4,5,6,7}
{1,2,3,4,5,6,7,8}
4
Returns: 70
{0,1,2,3,4,5,6,7}
{1,2,3,4,5,6,7,8}
8
Returns: 1
{7, 4, 1, 0, 1, 1, 6, 0 }
{6, 6, 2, 5, 0, 3, 8, 4 }
4
Returns: 896
{0, 1, 2 }
{1, 2, 3 }
2
Returns: 3
{0, 0, 0, 3, 3, 3, 3, 6 }
{1, 2, 3, 4, 5, 6, 8, 7 }
0
Returns: 3360
{0, 1, 2 }
{1, 2, 3 }
1
Returns: 3
{0, 0, 1, 1 }
{1, 2, 3, 4 }
0
Returns: 8