Open In App

Maximize number of nodes which are not part of any edge in a Graph

Given a graph with n nodes and m edges. Find the maximum possible number of nodes which are not part of any edge (m will always be less than or equal to a number of edges in complete graph).

Examples: 



Input: n = 3, m = 3
Output: Maximum Nodes Left Out: 0
Since it is a complete graph.

Input: n = 7, m = 6 
Output: Maximum Nodes Left Out: 3
We can construct a complete graph on 4 vertices using 6 edges.

Approach: Iterate over all n and see at which a number of nodes if we make a complete graph we obtain a number of edges more than m say it is K. Answer is n-k

Below is the implementation of above approach: 






// C++ program to illustrate above approach
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
 
// Function to return number of nodes left out
int answer(int n, int m)
{
    int i;
    for (i = 0; i <= n; i++) {
 
        // Condition to terminate, when
        // m edges are covered
        if ((i * (i - 1)) >= 2 * m)
            break;
    }
 
    return n - i;
}
 
// Driver Code
int main()
{
    int n = 7;
    int m = 6;
    cout << answer(n, m) << endl;
}




// Java program to illustrate above approach
 
import java.io.*;
 
class GFG {
 
// Function to return number of nodes left out
static int answer(int n, int m)
{
    int i;
    for (i = 0; i <= n; i++) {
 
        // Condition to terminate, when
        // m edges are covered
        if ((i * (i - 1)) >= 2 * m)
            break;
    }
 
    return n - i;
}
 
        // Driver Code
    public static void main (String[] args) {
        int n = 7;
    int m = 6;
    System.out.print( answer(n, m));
    }
}
// This code is contributed by anuj_67..




# Python 3 program to illustrate
# above approach
 
# Function to return number of
# nodes left out
def answer(n, m):
    for i in range(0, n + 1, 1):
         
        # Condition to terminate, when
        # m edges are covered
        if ((i * (i - 1)) >= 2 * m):
            break
     
    return n - i
 
# Driver Code
if __name__ == '__main__':
    n = 7
    m = 6
    print(answer(n, m))
 
# This code is contributed
# by Surendra_Gangwar




// C# program to illustrate
// above approach
using System;
 
class GFG
{
     
// Function to return number
// of nodes left out
static int answer(int n, int m)
{
    int i;
    for (i = 0; i <= n; i++)
    {
 
        // Condition to terminate, when
        // m edges are covered
        if ((i * (i - 1)) >= 2 * m)
            break;
    }
 
    return n - i;
}
 
// Driver Code
static public void Main ()
{
    int n = 7;
    int m = 6;
    Console.WriteLine(answer(n, m));
}
}
 
// This code is contributed
// by anuj_67




<?php
// PHP program to illustrate
// above approach
 
// Function to return number
// of nodes left out
function answer($n, $m)
{
    for ($i = 0; $i <= $n; $i++)
    {
 
        // Condition to terminate, when
        // m edges are covered
        if (($i * ($i - 1)) >= 2 * $m)
            break;
    }
 
    return $n - $i;
}
 
// Driver Code
$n = 7;
$m = 6;
echo answer($n, $m) + "\n";
 
// This code is contributed
// by Akanksha Rai(Abby_akku)
?>




<script>
 
// Javascript implementation of the above approach
 
// Function to return number of nodes left out
function answer(n, m)
{
    let i;
    for (i = 0; i <= n; i++) {
 
        // Condition to terminate, when
        // m edges are covered
        if ((i * (i - 1)) >= 2 * m)
            break;
    }
 
    return n - i;
}
 
// driver program
     
    let n = 7;
    let m = 6;
    document.write( answer(n, m));
   
</script>

Output
3

Complexity Analysis:


Article Tags :