Minimum spanning tree cost of given Graphs

Given an undirected graph of V nodes (V > 2) named V1, V2, V3, …, Vn. Two nodes Vi and Vj are connected to each other if and only if 0 < | i – j | ≤ 2. Each edge between any vertex pair (Vi, Vj) is assigned a weight i + j. The task is to find the cost of the minimum spanning tree of such graph with V nodes.

Examples:

Input: V = 4

Output: 13

Input: V = 5
Output: 21

Approach: Starting with a graph with minimum nodes (i.e. 3 nodes), the cost of the minimum spanning tree will be 7. Now for every node i starting from the fourth node which can be added to this graph, ith node can only be connected to (i – 1)th and (i – 2)th node and the minimum spanning tree will only include the node with the minimum weight so the newly added edge will have the weight i + (i – 2).

So addition of fourth node will increase the overall weight as 7 + (4 + 2) = 13
Similarly adding fifth node, weight = 13 + (5 + 3) = 21

For nth node, weight = weight + (n + (n – 2)).

This can be generalized as weight = V2 – V + 1 where V is the total nodes in the graph.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// Function that returns the minimum cost
// of the spanning tree for the required graph
int getMinCost(int Vertices)
{
    int cost = 0;
  
    // Calculating cost of MST
    cost = (Vertices * Vertices) - Vertices + 1;
  
    return cost;
}
  
// Driver code
int main()
{
    int V = 5;
    cout << getMinCost(V);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach 
class GfG 
  
// Function that returns the minimum cost 
// of the spanning tree for the required graph 
static int getMinCost(int Vertices) 
    int cost = 0
  
    // Calculating cost of MST 
    cost = (Vertices * Vertices) - Vertices + 1
  
    return cost; 
  
// Driver code 
public static void main(String[] args) 
    int V = 5
    System.out.println(getMinCost(V)); 
}
  
// This code is contributed by 
// Prerna Saini.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the above approach 
using System;
  
class GfG 
  
    // Function that returns the minimum cost 
    // of the spanning tree for the required graph 
    static int getMinCost(int Vertices) 
    
        int cost = 0; 
      
        // Calculating cost of MST 
        cost = (Vertices * Vertices) - Vertices + 1; 
      
        return cost; 
    
      
    // Driver code 
    public static void Main() 
    
        int V = 5; 
        Console.WriteLine(getMinCost(V)); 
    }
  
// This code is contributed by Ryuga

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# python3 implementation of the approach
   
# Function that returns the minimum cost
# of the spanning tree for the required graph
def getMinCost( Vertices):
    cost = 0
   
    # Calculating cost of MST
    cost = (Vertices * Vertices) - Vertices + 1
   
    return cost
   
# Driver code
if __name__ == "__main__":
  
    V = 5
    print (getMinCost(V))
  

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the approach
// Function that returns the minimum cost
// of the spanning tree for the required graph
function getMinCost($Vertices)
{
    $cost = 0;
  
    // Calculating cost of MST
    $cost = ($Vertices * $Vertices) - $Vertices + 1;
  
    return $cost;
}
  
// Driver code
$V = 5;
echo getMinCost($V);
  
#This Code is contributed by ajit..
?>

chevron_right


Output:

21


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.