Maximum and minimum isolated vertices in a graph

Given ‘n’ vertices and ‘m’ edges of a graph. Find the minimum number and maximum number of isolated vertices that are possible in the graph.
Examples:

Input : 4 2
Output : Minimum 0
         Maximum 1

1--2 3--4 <---Minimum -  No isolated vertex
1--2   <--- Maximum - 1 Isolated vertex i.e. 4
   |
   3


Input : 5 2
Output : Minimum 1
         Maximum 2

1--2 3--4 5  <-- Minimum - 1 isolated vertex i.e. 5
1--2   4  5  <-- Maximum - 2 isolated vertex i.e. 4 and 5
   |
   3
  1. For minimum number of isolated vertices, we connect two vertices by only one edge. Each vertex should be only connected to one other vertex and each vertex should have degree one
    Thus if the number of edges is ‘m’, and if ‘n’ vertices <=2 * 'm' edges, there is no isolated vertex and if this condition is false, there are n-2*m isolated vertices.
  2. For maximum number of isolated vertices, we create a polygon such that each vertex is connected to other vertex and each vertex has a diagonal with every other vertex. Thus, number of diagonals from one vertex to other vertex of n sided polygon is n*(n-3)/2 and number of edges connecting adjacent vertices is n. Thus, total number of edges is n*(n-1)/2.

Below is the implementation of above approach.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to find maximum/minimum number
// of isolated vertices.
#include <bits/stdc++.h>
using namespace std;
  
// Function to find out the minimum and 
// maximum number of isolated vertices
void find(int n, int m)
{
    // Condition to find out minimum number 
    // of isolated vertices
    if (n <= 2 * m)
        cout << "Minimum " << 0 << endl;
    else
        cout << "Minimum " << n - 2 * m << endl;
  
    // To find out maximum number of isolated 
    // vertices
    // Loop to find out value of number of 
    // vertices that are connected
    int i;
    for (i = 1; i <= n; i++) {
        if (i * (i - 1) / 2 >= m)
            break;
    }
    cout << "Maximum " << n - i;
}
  
// Driver Function
int main()
{
    // Number of vertices
    int n = 4;
  
    // Number of edges
    int m = 2;
  
    // Calling the function to maximum and 
    // minimum number of isolated vertices
    find(n, m);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find maximum/minimum number
// of isolated vertices.
  
import java.io.*;
  
class GFG {
   
  
// Function to find out the minimum and 
// maximum number of isolated vertices
 static void find(int n, int m)
{
    // Condition to find out minimum number 
    // of isolated vertices
    if (n <= 2 * m)
        System.out.println( "Minimum " + 0);
    else
        System.out.println( "Minimum " + (n - 2 * m));
  
    // To find out maximum number of isolated 
    // vertices
    // Loop to find out value of number of 
    // vertices that are connected
    int i;
    for (i = 1; i <= n; i++) {
        if (i * (i - 1) / 2 >= m)
            break;
    }
    System.out.println( "Maximum " + (n - i));
}
  
// Driver Function
  
    public static void main (String[] args) {
      
    // Number of vertices
    int n = 4;
  
    // Number of edges
    int m = 2;
  
    // Calling the function to maximum and 
    // minimum number of isolated vertices
    find(n, m);
    }
}
//This code is contributed by inder_verma.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find maximum/minimum 
# number of isolated vertices. 
  
# Function to find out the minimum and 
# maximum number of isolated vertices 
def find(n, m) :
  
    # Condition to find out minimum 
    # number of isolated vertices 
    if (n <= 2 * m):
        print("Minimum ", 0
    else:
        print("Minimum ", n - 2 * m ) 
  
    # To find out maximum number of 
    # isolated vertices 
    # Loop to find out value of number 
    # of vertices that are connected 
    for i in range(1, n + 1): 
        if (i * (i - 1) // 2 >= m): 
            break
      
    print("Maximum ", n - i)
      
# Driver Code
if __name__ == '__main__':
      
    # Number of vertices 
    n = 4
  
    # Number of edges 
    m = 2
  
    # Calling the function to maximum and 
    # minimum number of isolated vertices 
    find(n, m)
  
# This code is contributed by 
# SHUBHAMSINGH10

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find maximum/
// minimum number of isolated vertices. 
using System;
  
class GFG
  
// Function to find out the 
// minimum and maximum number
// of isolated vertices 
static void find(int n, int m) 
    // Condition to find out minimum 
    // number of isolated vertices 
    if (n <= 2 * m) 
        Console.WriteLine("Minimum " + 0); 
    else
        Console.WriteLine("Minimum "
                         (n - 2 * m)); 
  
    // To find out maximum number 
    // of isolated vertices 
    // Loop to find out value of 
    // number of vertices that 
    // are connected 
    int i; 
    for (i = 1; i <= n; i++) 
    
        if (i * (i - 1) / 2 >= m) 
            break
    
    Console.WriteLine("Maximum " + (n - i)); 
  
// Driver Code 
public static void Main () 
  
    // Number of vertices 
    int n = 4; 
      
    // Number of edges 
    int m = 2; 
      
    // Calling the function to  
    // maximum and minimum number
    // of isolated vertices 
    find(n, m); 
  
// This code is contributed 
// by inder_verma. 

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find maximum/minimum 
// number of isolated vertices.
  
// Function to find out the 
// minimum and maximum number
// of isolated vertices
function find($n, $m)
{
    // Condition to find out minimum 
    // number of isolated vertices
    if ($n <= 2 * $m)
        echo "Minimum 0\n";
    else
        echo "Minimum " , ($n - 2 * $m);
  
    // To find out maximum number 
    // of isolated vertices
    // Loop to find out value of number
    // of vertices that are connected
    for ($i = 1; $i <= $n; $i++)
    {
        if ($i * ($i - 1) / 2 >= $m)
            break;
    }
    echo "Maximum " , ($n - $i);
}
  
// Driver Code
  
// Number of vertices
$n = 4;
  
// Number of edges
$m = 2;
  
// Calling the function to 
// maximum and minimum number 
// of isolated vertices
find($n, $m);
  
// This code is contributed 
// by inder_verma
?>

chevron_right


Output:



Minimum 0
Maximum 1

Time Complexity – O(n)



My Personal Notes arrow_drop_up

Coder only XD Do send reference if contacting me

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.



Improved By : inderDuMCA, SHUBHAMSINGH10



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.