Maximum number of edges in Bipartite graph in C++

C++Server Side ProgrammingProgramming

Problem statement

Given an integer N which represents the number of Vertices. The Task is to find the maximum number of edges possible in a Bipartite graph of N vertices.

Bipartite Graph

  • A Bipartite graph is one which is having 2 sets of vertices.
  • The set are such that the vertices in the same set will never share an edge between them.

Example

If N = 10 then there will be total 25 edges −

  • Both sets will contain 5 vertices and every vertex of first set will have an edge to every other vertex of the second set
  • Hence total edges will be 5 * 5 = 25

Algorithm

  • The number of edges will be maximum when every vertex of a given set has an edge to every other vertex of the other set i.e. edges = m * n where m and n are the number of edges in both the sets
  • in order to maximize the number of edges, m must be equal to or as close to n as possible
  • Hence, the maximum number of edges can be calculated with the formula −

            (n * n) / 4

Example

 Live Demo

#include <bits/stdc++.h>
using namespace std;
int getMaxEdges(int n) {
   return floor((n * n) / 4);
}
int main() {
   int n = 7;
   cout << "Maximum edges = " << getMaxEdges(n) << endl;
   return 0;
}

Output

When you compile and execute above program. It generates following output −

Maximum edges = 12
raja
Published on 10-Jan-2020 12:22:45
Advertisements