
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C++ Program to Represent Graph Using Adjacency Matrix
What is Adjacency Matrix?
Adjacency matrix is a square matrix that represent a finite graph data structure using a 2D array. The each elements in the matrix represent the edges of the graph. For example, if the graph has some edges from i to j vertices, then in the adjacency matrix at ith row and jth column it will be 1 (or some non-zero value for weighted graph), otherwise that place will hold 0.
Graph
The image below represent a simple undirected graph with 6 vertices and 8 edges.

Adjacency Matrix
The adjacency matrix of the above graph is shown below.
0 |
1 |
2 |
3 |
4 |
5 |
|
---|---|---|---|---|---|---|
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
2 |
0 |
1 |
0 |
1 |
0 |
0 |
3 |
1 |
0 |
1 |
0 |
0 |
1 |
4 |
1 |
1 |
0 |
0 |
0 |
1 |
5 |
0 |
1 |
1 |
1 |
1 |
0 |
Algorithm
The following are the steps to represent a graph using an adjacency matrix.
- Step 1: Start
- Step 2: Input the number of vertices V and number of edges E in the graph
- Step 3: Initialize a V x V matrix (adjMatrix) and set all values to 0.
- Step 4: For each edge, repeat step 5 to step 7.
- Step 5: Input the pair of vertices (u, v) that form an edge.
- Step 6: Set adjMatrix[u][v] = 1
- Step 7: If the graph is undirected, also set adjMatrix[v][u] = 1
- Step 8: Display the adjacency matrix.
- Step 9: End
C++ Program for Adjacency Matrix Representation of a Graph
The following C++ program demonstrates how to represent a graph using an adjacency matrix. The program allows the user to input the number of vertices and edges, and then it displays the adjacency matrix.
#include <iostream> using namespace std; class Graph { private: int vertices; int **adjMatrix; bool isDirected; public: Graph(int v, bool directed = false) { vertices = v; isDirected = directed; // Allocate memory for adjacency matrix adjMatrix = new int*[vertices]; for (int i = 0; i < vertices; ++i) { adjMatrix[i] = new int[vertices]; for (int j = 0; j < vertices; ++j) { adjMatrix[i][j] = 0; // Initialize with 0 } } } void addEdge(int i, int j) { adjMatrix[i][j] = 1; if (!isDirected) { adjMatrix[j][i] = 1; } } void display() { cout << "Adjacency Matrix:\n"; for (int i = 0; i < vertices; ++i) { for (int j = 0; j < vertices; ++j) { cout << adjMatrix[i][j] << " "; } cout << endl; } } ~Graph() { for (int i = 0; i < vertices; ++i) { delete[] adjMatrix[i]; } delete[] adjMatrix; } }; int main() { int V, E; cout << "Enter number of vertices: "; cin >> V; Graph g(V); // Change to Graph g(V, true); for directed graph cout << "Enter number of edges: "; cin >> E; cout << "Enter edges (format: from to):\n"; for (int i = 0; i < E; ++i) { int from, to; cin >> from >> to; g.addEdge(from, to); } g.display(); return 0; }
Sample Output
The output of the above program is as follows:
