A graph is a data structure that consists of a set of vertices (also known as nodes) and a set of edges that connect these vertices. Each edge represents a relationship or connection between two vertices. Graphs can be directed, where the edges have a specific direction, or undirected, where the edges have no direction. Graphs are commonly used in computer science to model complex systems, such as social networks, transportation networks, and computer networks. They are also used in algorithms for tasks such as shortest path finding, network flow optimization, and clustering. Keep reading below to learn how to use a **Graph** in **C++**.

#### Looking to get a head start on your next software interview? Pickup a copy of the best book to prepare: Cracking The Coding Interview!

## How to use a Graph in C++ with example code

Graphs are a fundamental data structure in computer science and are used to represent relationships between objects. In C++, graphs can be implemented using various data structures such as adjacency matrix, adjacency list, and edge list. In this blog post, we will discuss how to use a graph in C++ using the adjacency list data structure.

An adjacency list is a collection of unordered lists used to represent a finite graph. Each list describes the set of neighbors of a vertex in the graph. To implement an adjacency list in C++, we can use a vector of vectors. The outer vector represents the vertices of the graph, and the inner vector represents the neighbors of each vertex.

Let’s consider an example of a graph with four vertices and five edges:

“`

1 — 2

| |

4 — 3

“`

To represent this graph using an adjacency list, we can create a vector of vectors as follows:

“`cpp

vector

adjList[0] = {1, 4};

adjList[1] = {0, 2};

adjList[2] = {1, 3};

adjList[3] = {2, 4};

“`

In the above code, we first create a vector of vectors with four elements. Then, we add the neighbors of each vertex to the corresponding inner vector.

To traverse the graph using the adjacency list, we can use a depth-first search (DFS) or breadth-first search (BFS) algorithm. Here’s an example of a DFS algorithm implemented using the adjacency list:

“`cpp

void dfs(int v, vector

visited[v] = true;

cout << v << " ";
for (int u : adjList[v]) {
if (!visited[u]) {
dfs(u, visited, adjList);
}
}
}
int main() {
vector

adjList[0] = {1, 4};

adjList[1] = {0, 2};

adjList[2] = {1, 3};

adjList[3] = {2, 4};

vector

dfs(0, visited, adjList);

return 0;

}

“`

In the above code, we first create a vector of bools to keep track of visited vertices. Then, we call the DFS function with the starting vertex, visited vector, and adjacency list. The DFS function marks the starting vertex as visited, prints it, and recursively calls itself for all unvisited neighbors of the starting vertex.

In conclusion, the adjacency list is a popular data structure for implementing graphs in C++. It allows for efficient traversal of the graph using DFS or BFS algorithms.

## What is a Graph in C++?

In conclusion, a graph in C++ is a powerful data structure that allows us to represent complex relationships between objects. It is a collection of vertices or nodes that are connected by edges, which can be directed or undirected. Graphs can be used to solve a wide range of problems, from finding the shortest path between two points to modeling social networks and transportation systems. In C++, there are several libraries and algorithms available for working with graphs, such as Boost Graph Library and Dijkstra’s algorithm. By understanding the basics of graphs in C++, we can unlock a whole new world of possibilities for solving complex problems in computer science and beyond.