# Maximum Possible Edge Disjoint Spanning Tree From a Complete Graph

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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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:

A

B

Example 2:

Complete graph with 5 vertices

All possible Edge-disjoint spanning trees for the above graph are:

A

B

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 ` `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  `

 ` `

Output:
```2
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

Article Tags :
Practice Tags :