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>
Output
2
Time Complexity: O(1)
Auxiliary Space: O(1)