There is a tree with vertices. An edge of the tree may be either a light edge or a heavy edge. You need to perform operations on the tree. Initially, all edges on the tree are light edges. There are two operations:
Given two vertices and , for all on the path between and (including and themselves), you need to turn all edges connected with into light edges, and turn all edges on the path between and into heavy edges.
Given two vertices and , you need to compute the number of heavy edges on the path between and .
Input Specification
The first line is an integer denoting the number of test cases. test cases follow, each formatted as follows.
For each test case, the first line has two integers and where is the number of vertices and is the number of operations.
For the next lines, each line contains two integers and denoting an edge of the tree.
For the next lines, each line contains three integers denoting an operation. means the operation is an operation of the first type, while means the operation is an operation of the second type.
It's guaranteed that in all operations.
Output Specification
For each operation of the second type, output an integer denoting the answer to the query.
Sample Input 1
1
7 7
1 2
1 3
3 4
3 5
3 6
6 7
1 1 7
2 1 4
2 2 7
1 1 5
2 2 7
1 2 1
2 1 7
Sample Output 1
1
3
2
1
Explanation for Sample Output 1
After operation 1, the heavy edges are ; ; .
In operation 2, the only heavy edge on the path from vertex to vertex is .
In operation 3, the heavy edges on the path from vertex to vertex are ; ; .
After operation 4, and will become light edges first, and then and will become heavy edges.
In operation 5, the heavy edges on the path from vertex to vertex are and .
After operation 6, edge will become a light edge while will become a heavy edge.
In operation 7, the heavy edge on the path from vertex to vertex is edge .
Additional Samples
Sample inputs and outputs can be found here.
- Sample 2 (
edge2.in
andedge2.ans
) corresponds to cases 3-6. - Sample 3 (
edge3.in
andedge3.ans
) corresponds to cases 9-10. - Sample 4 (
edge4.in
andedge4.ans
) corresponds to cases 11-14. - Sample 5 (
edge5.in
andedge5.ans
) corresponds to cases 17-20.
Constraints
For all test sets, , .
Test Case | Additional Constraints | |
---|---|---|
1~2 | None. | |
3~6 | ||
7~8 | A,B | |
9~10 | A | |
11~14 | B | |
15~16 | None. | |
17~20 |
Constraint A means the tree is a path.
Constraint B means for operations of the second type, and
are directly connected by an edge.
Comments