Please help with C++ graph question in C++ language. Thank you.
Extracted text: 1. Write a program that implements an adjacency matrix for an undirected and unweighted graph. struct Edge { int vertexl; Int vertex2; } ; Implement the following functions. a. void insertEdge (Edge e, int adjMat[4] [4]); a. //Purpose: Store an edge defined by two vertices. b. void printGraph (int adjMat[4] [4]) a. //prints the edges included in an adjacency matrix c. Test your program output with graph G that has 4 vertices (1, 2, 3, and 4) and edges {(1,2), (1,4), (2,1), (2,3), (3,2), (4,1)}. 2. Write a program that implements an adjacency matrix for an undirected and unweighted graph. struct Node ( int Vertex; Node* next; }; Implement the following functions. a. void printList (Node adjList[4]) b. //prints the vertices included in //an adjacency list c. Test your program output with graph G that has 4 vertices (1, 2, 3, and 4) and edges {(1,2), (1,4), (2,1), (2,3), (3,2), (4,1)}. Sample Run: Adjacency Matrix: 1 2 3 4 1 (0] (1] (0] (1)] 2 [11 (8] (1] (8] 3 [8] [1] [0J (0] 4 [1] (0] (0] (0] Adjacency List: (1, 2) (1, 4> (2, 1) (2, 3) (3, 2> (4, 1)