You’re given a connected undirected graph with N nodes and M edges. Your task is to find the total number of spanning trees of this graph.
Note :A spanning tree T of an undirected graph G is a subgraph that is a tree that includes all of the vertices of G. A graph that is not connected will not contain a spanning tree.
The first line of the input contains an integer T denoting the number of test cases.
The first line of each test case contains two space-separated integers N and M, the number of nodes, and the edges.
The next ‘M’ line of each test case contains two space-separated integers X and Y, denoting an edge between X and Y.
Output Format :
For every test case, the only output line should contain an integer X, the total number of spanning trees in a graph.
The output of each test case should be printed in a new line.
Note :
You do not need to print anything; it has already been taken care of. Just implement the given function.
1 <= T <= 5
1 <= N <= 10
N-1 <= M <= N*(N-1)/2
0 <= 'X', 'Y' <= N - 1
Where 'T' denotes the number of test cases, 'N' and 'M' denotes the number of nodes and edges, respectively. And, 'X', 'Y' denotes the node in the graph.
Time limit : 1 sec
1
6 5
0 3
0 1
1 2
1 5
3 4
1
.png)
This is the only possible spanning tree for the given input graph.
1
3 3
0 1
1 2
2 0
3
.png)
These are three possible spanning trees, i.e., 0 → 1 → 2, 1 → 0 → 2, and 0 → 2 → 1.
Think about using the degree of the node in the adjacency matrix.
First, check if the given graph is a tree or a complete graph.
If the graph is neither a tree nor a complete graph, then we can use the Kirchhoff Matrix-Tree Theorem, through which we can find the number of spanning trees for any graph.
Algorithm :
where |D| is the determinant of the matrix we get by deleting ith row and jth column from the adjacency matrix.
O(N^4), where N is the number of nodes.
The adjacency matrix will be a N*N matrix, and when we are calculating its determinant, we have to traverse the whole matrix N times because we need to consider each entry in the first row. Calculating determinant will cost us O(N^3), and performing it N times will give us the final time complexity = O(N^4).
O(N^2), where N is the number of nodes.
We will require a matrix of size N*N to create our adjacency matrix of N nodes. Hence, the space complexity will be O(N^2).