# Print Adjacency List for a Directed Graph

• Last Updated : 11 Feb, 2022

An Adjacency List is used for representing graphs. Here, for every vertex in the graph, we have a list of all the other vertices which the particular vertex has an edge to.

Problem: Given the adjacency list and number of vertices and edges of a graph, the task is to represent the adjacency list for a directed graph.

Examples:

Input: V = 3, edges[][]= {{0, 1}, {1, 2} {2, 0}} Output:   0 -> 1
1 -> 2
2 -> 0
Explanation:
The output represents the adjacency list for the given graph.

Input: V = 4, edges[][] = {{0, 1}, {1, 2}, {1, 3}, {2, 3}, {3, 0}} Output:   0 -> 1
1 -> 2 3
2 -> 3
3 -> 0
Explanation:
The output represents the adjacency list for the given graph.

Approach (using STL): The main idea is to represent the graph as an array of vectors such that every vector represents the adjacency list of a single vertex. Using STL, the code becomes simpler and easier to understand.

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach`   `#include ` `using` `namespace` `std;`   `// Function to add edges` `void` `addEdge(vector<``int``> adj[], ``int` `u, ``int` `v)` `{` `    ``adj[u].push_back(v);` `}`   `// Function to print adjacency list` `void` `adjacencylist(vector<``int``> adj[], ``int` `V)` `{` `    ``for` `(``int` `i = 0; i < V; i++) {` `        ``cout << i << ``"->"``;` `        ``for` `(``int``& x : adj[i]) {` `            ``cout << x << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `// Function to initialize the adjacency list` `// of the given graph` `void` `initGraph(``int` `V, ``int` `edges, ``int` `noOfEdges)` `{` `    ``// To represent graph as adjacency list` `    ``vector<``int``> adj[V];`   `    ``// Traverse edges array and make edges` `    ``for` `(``int` `i = 0; i < noOfEdges; i++) {`   `        ``// Function call to make an edge` `        ``addEdge(adj, edges[i], edges[i]);` `    ``}`   `    ``// Function Call to print adjacency list` `    ``adjacencylist(adj, V);` `}`   `// Driver Code` `int` `main()` `{` `    ``// Given vertices` `    ``int` `V = 3;`   `    ``// Given edges` `    ``int` `edges = { { 0, 1 }, { 1, 2 }, { 2, 0 } };`   `    ``int` `noOfEdges = 3;`   `    ``// Function Call` `    ``initGraph(V, edges, noOfEdges);`   `    ``return` `0;` `}`

## Java

 `// Java program for the above approach` `import` `java.util.*;`   `class` `GFG` `{`   `  ``// Function to add edges` `  ``static` `void` `addEdge(Vector adj[], ``int` `u, ``int` `v)` `  ``{` `    ``adj[u].add(v);` `  ``}`   `  ``// Function to print adjacency list` `  ``static` `void` `adjacencylist(Vector adj[], ``int` `V)` `  ``{` `    ``for` `(``int` `i = ``0``; i < V; i++) {` `      ``System.out.print(i+ ``"->"``);` `      ``for` `(``int` `x : adj[i]) {` `        ``System.out.print(x+ ``" "``);` `      ``}` `      ``System.out.println();` `    ``}` `  ``}`   `  ``// Function to initialize the adjacency list` `  ``// of the given graph` `  ``static` `void` `initGraph(``int` `V, ``int` `edges[][], ``int` `noOfEdges)` `  ``{`   `    ``// To represent graph as adjacency list` `    ``@SuppressWarnings``(``"unchecked"``)` `    ``Vector adj[] = ``new` `Vector[``3``];` `    ``for``(``int` `i =``0``;i();` `    ``}` `    ``// Traverse edges array and make edges` `    ``for` `(``int` `i = ``0``; i < noOfEdges; i++) {`   `      ``// Function call to make an edge` `      ``addEdge(adj, edges[i][``0``], edges[i][``1``]);` `    ``}`   `    ``// Function Call to print adjacency list` `    ``adjacencylist(adj, V);` `  ``}`   `  ``// Driver Code` `  ``public` `static` `void` `main(String[] args)` `  ``{` `    ``// Given vertices` `    ``int` `V = ``3``;`   `    ``// Given edges` `    ``int` `edges[][] = { { ``0``, ``1` `}, { ``1``, ``2` `}, { ``2``, ``0` `} };`   `    ``int` `noOfEdges = ``3``;`   `    ``// Function Call` `    ``initGraph(V, edges, noOfEdges);`   `  ``}` `}`   `// This code is contributed by gauravrajput1 `

## Python3

 `# Python program for the above approach`   `# Function to add edges` `def` `addEdge(adj, u, v):` `    ``adj[u].append(v)` `  `  `# Function to print adjacency list` `def` `adjacencylist(adj, V):` `    `  `    ``for` `i ``in` `range` `(``0``, V):` `        ``print``(i, ``"->"``, end``=``"")` `        `  `        ``for` `x ``in`  `adj[i]: ` `            ``print``(x , ``" "``, end``=``"")` `      `  `        ``print``()` `    `  `# Function to initialize the adjacency list` `# of the given graph` `def` `initGraph(V, edges, noOfEdges):`   `    ``adj ``=` `[``0``]``*` `3` `    `  `    ``for` `i ``in` `range``(``0``, ``len``(adj)):` `        ``adj[i] ``=` `[]` `  `  `    ``# Traverse edges array and make edges` `    ``for` `i ``in` `range``(``0``, noOfEdges) :`   `         ``# Function call to make an edge` `        ``addEdge(adj, edges[i][``0``], edges[i][``1``])` `    `    `    ``# Function Call to print adjacency list` `    ``adjacencylist(adj, V)` `  `  `# Driver Code` `  `  `# Given vertices` `V ``=` `3`   `# Given edges` `edges ``=`  `[[``0``, ``1` `],  [``1``, ``2` `],  [``2``, ``0` `]] `   `noOfEdges ``=` `3``;`   `# Function Call` `initGraph(V, edges, noOfEdges)`   `# This code is contributed by AR_Gaurav`

## C#

 `// C# program for the above approach` `using` `System;` `using` `System.Collections.Generic;`   `public` `class` `GFG` `{`   `  ``// Function to add edges` `  ``static` `void` `addEdge(List<``int``> []adj, ``int` `u, ``int` `v)` `  ``{` `    ``adj[u].Add(v);` `  ``}`   `  ``// Function to print adjacency list` `  ``static` `void` `adjacencylist(List<``int``> []adj, ``int` `V)` `  ``{` `    ``for` `(``int` `i = 0; i < V; i++) {` `      ``Console.Write(i+ ``"->"``);` `      ``foreach` `(``int` `x ``in` `adj[i]) {` `        ``Console.Write(x+ ``" "``);` `      ``}` `      ``Console.WriteLine();` `    ``}` `  ``}`   `  ``// Function to initialize the adjacency list` `  ``// of the given graph` `  ``static` `void` `initGraph(``int` `V, ``int` `[,]edges, ``int` `noOfEdges)` `  ``{`   `    ``// To represent graph as adjacency list   ` `    ``List<``int``> []adj = ``new` `List<``int``>;` `    ``for``(``int` `i = 0; i < adj.Length; i++) {` `      ``adj[i] = ``new` `List<``int``>();` `    ``}` `    `  `    ``// Traverse edges array and make edges` `    ``for` `(``int` `i = 0; i < noOfEdges; i++) {`   `      ``// Function call to make an edge` `      ``addEdge(adj, edges[i,0], edges[i,1]);` `    ``}`   `    ``// Function Call to print adjacency list` `    ``adjacencylist(adj, V);` `  ``}`   `  ``// Driver Code` `  ``public` `static` `void` `Main(String[] args)` `  ``{` `    ``// Given vertices` `    ``int` `V = 3;`   `    ``// Given edges` `    ``int` `[,]edges = { { 0, 1 }, { 1, 2 }, { 2, 0 } };`   `    ``int` `noOfEdges = 3;`   `    ``// Function Call` `    ``initGraph(V, edges, noOfEdges);`   `  ``}` `}`   `// This code is contributed by Amit Katiyar`

## Javascript

 ``

Output:

```0->1
1->2
2->0```

My Personal Notes arrow_drop_up
Recommended Articles
Page :