# Maximum Possible Edge Disjoint Spanning Tree From a Complete Graph

• Last Updated : 14 Apr, 2021

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

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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

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

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

## Python3

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

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

 ``

## Javascript

 ``
Output:
`2`

My Personal Notes arrow_drop_up