Give a complete graph with N-vertices. The task is to find out the maximum number of edge-disjoint spanning tree possible.
Edge-disjoint Spanning Tree is a spanning tree where no two trees in the set have an edge in common.
Examples:
Input : N = 4 Output : 2 Input : N = 5 Output : 2
The maximum number of possible Edge-Disjoint Spanning tree from a complete graph with N vertices can be given as,
Max Edge-disjoint spanning tree = floor(N / 2)
Let’s look at some examples:
Example 1:
Complete graph with 4 vertices
All possible Edge-disjoint spanning trees for the above graph are:
Example 2:
Complete graph with 5 vertices
All possible Edge-disjoint spanning trees for the above graph are:
Implementation: Below is the program to find the maximum number of edge-disjoint spanning trees possible.
// C++ program to find the maximum number of // Edge-Disjoint Spanning tree possible #include <bits/stdc++.h> using namespace std;
// Function to calculate max number of // Edge-Disjoint Spanning tree possible float edgeDisjoint( int n)
{ float result = 0;
result = floor (n / 2);
return result;
} // Driver code int main()
{ int n = 4;
cout << edgeDisjoint(n);
return 0;
} |
// Java program to find the maximum // number of Edge-Disjoint Spanning // tree possible import java.io.*;
class GFG
{ // Function to calculate max number // of Edge-Disjoint Spanning tree // possible static double edgeDisjoint( int n)
{ double result = 0 ;
result = Math.floor(n / 2 );
return result;
} // Driver Code public static void main(String[] args)
{ int n = 4 ;
System.out.println(( int )edgeDisjoint(n));
} } // This code is contributed // by Naman_Garg |
# Python 3 to find the maximum # number of Edge-Disjoint # Spanning tree possible import math
# Function to calculate max # number of Edge-Disjoint # Spanning tree possible def edgeDisjoint(n):
result = 0
result = math.floor(n / 2 )
return result
# Driver Code if __name__ = = "__main__" :
n = 4
print ( int (edgeDisjoint(n)))
# This Code is contributed # by Naman_Garg |
// C# program to find the maximum number of // Edge-Disjoint Spanning tree possible using System;
class GFG
{ // Function to calculate max number of // Edge-Disjoint Spanning tree possible static double edgeDisjoint( double n)
{ double result = 0;
result = Math.Floor(n / 2);
return result;
} // Driver Code public static void Main()
{ int n = 4;
Console.Write(edgeDisjoint(n));
} } // This code is contributed // by Sanjit_Prasad |
<?php // PHP program to find the maximum // number of Edge-Disjoint Spanning // tree possible // Function to calculate max number of // Edge-Disjoint Spanning tree possible function edgeDisjoint( $n )
{ $result = 0;
$result = floor ( $n / 2);
return $result ;
} // Driver code $n = 4;
echo edgeDisjoint( $n );
// This code is contributed // by Ankita Saini ?> |
<script> // Javascript program to find the maximum number of // Edge-Disjoint Spanning tree possible // Function to calculate max number of // Edge-Disjoint Spanning tree possible function edgeDisjoint(n)
{ var result = 0;
result = Math.floor(n / 2);
return result;
} // Driver code var n = 4;
document.write( edgeDisjoint(n)); </script> |
2
Time Complexity: O(1)
Auxiliary Space: O(1)