Bird
Raised Fist0
DSA C++programming~10 mins

Adjacency Matrix Representation in DSA C++ - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a 2D adjacency matrix for 4 nodes initialized with zeros.

DSA C++
int adjMatrix[4][4] = [1];
Drag options to blanks, or click blank then click option'
A{{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}
B{{0}}
C{}
D{{1, 0, 0, 0}}
Attempts:
3 left
💡 Hint
Common Mistakes
Initializing with empty braces {} only creates an empty array.
Using a single row of zeros does not create a 4x4 matrix.
2fill in blank
medium

Complete the code to set an edge from node 1 to node 3 in the adjacency matrix.

DSA C++
adjMatrix[1][[1]] = 1;
Drag options to blanks, or click blank then click option'
A2
B3
C1
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using 3 as index causes out-of-bounds error.
Confusing node numbers with zero-based indices.
3fill in blank
hard

Fix the error in the code to correctly check if there is an edge from node 0 to node 2.

DSA C++
if (adjMatrix[0][2] [1]) {
    // edge exists
}
Drag options to blanks, or click blank then click option'
A= 1
B== 1
C!= 1
D>= 1
Attempts:
3 left
💡 Hint
Common Mistakes
Using '=' instead of '==' in if condition.
Confusing assignment with comparison.
4fill in blank
hard

Fill both blanks to correctly print all edges from node 2.

DSA C++
for (int [1] = 0; [2] < 4; [1]++) {
    if (adjMatrix[2][[1]] == 1) {
        std::cout << "Edge from 2 to " << [1] << std::endl;
    }
}
Drag options to blanks, or click blank then click option'
Ai
Bj
Dk
Attempts:
3 left
💡 Hint
Common Mistakes
Using different variable names in loop initialization and condition.
Using undefined variables in the loop.
5fill in blank
hard

Fill all three blanks to create an adjacency matrix for 3 nodes and add an edge from node 0 to node 1.

DSA C++
int [1][[2]][[3]] = {{0}};
adjMatrix[0][1] = 1;
Drag options to blanks, or click blank then click option'
AadjMatrix
B3
Dmatrix
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different variable name than 'adjMatrix'.
Incorrect matrix size for 3 nodes.

Practice

(1/5)
1. What does an adjacency matrix represent in graph theory?
easy
A. A sequence of visited nodes
B. A list of nodes in the graph
C. A 2D array showing connections between nodes
D. A stack used for graph traversal

Solution

  1. Step 1: Understand adjacency matrix concept

    An adjacency matrix is a 2D array where rows and columns represent nodes.
  2. Step 2: Identify what the matrix stores

    Each cell shows if there is a connection (edge) between two nodes.
  3. Final Answer:

    A 2D array showing connections between nodes -> Option C
  4. Quick Check:

    Adjacency matrix = 2D array of connections [OK]
Hint: Adjacency matrix = grid showing edges between nodes [OK]
Common Mistakes:
  • Confusing adjacency matrix with adjacency list
  • Thinking it stores node values instead of edges
  • Mixing it up with traversal order
2. Which of the following is the correct way to declare a 4x4 adjacency matrix in C++?
easy
A. int matrix(4,4);
B. int matrix[][] = new int[4][4];
C. int matrix[4];
D. int matrix[4][4];

Solution

  1. Step 1: Recall C++ array declaration syntax

    In C++, a 2D array is declared as type name[size1][size2].
  2. Step 2: Check each option

    int matrix[4][4]; uses correct syntax: int matrix[4][4]; int matrix(4,4); is invalid syntax, C is 1D array, D is invalid in C++.
  3. Final Answer:

    int matrix[4][4]; -> Option D
  4. Quick Check:

    2D array declaration = int matrix[4][4]; [OK]
Hint: Use int name[rows][cols] for 2D arrays in C++ [OK]
Common Mistakes:
  • Using parentheses instead of brackets
  • Declaring only one dimension
  • Trying Java-style new keyword in C++
3. Given the following adjacency matrix for a graph with 3 nodes:
int graph[3][3] = {
  {0, 1, 0},
  {1, 0, 1},
  {0, 1, 0}
};
What is the output of this code snippet?
for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    if (graph[i][j] == 1) {
      std::cout << i << "->" << j << " ";
    }
  }
}
medium
A. 0->1 1->0 1->2 2->1
B. 0->0 1->1 2->2
C. 1->0 2->1
D. 0->2 2->0

Solution

  1. Step 1: Analyze the adjacency matrix values

    Matrix shows edges: 0 connected to 1, 1 connected to 0 and 2, 2 connected to 1.
  2. Step 2: Trace the nested loops and print statements

    For each i,j where graph[i][j] == 1, print i->j. This matches edges 0->1, 1->0, 1->2, 2->1.
  3. Final Answer:

    0->1 1->0 1->2 2->1 -> Option A
  4. Quick Check:

    Edges printed = 0->1 1->0 1->2 2->1 [OK]
Hint: Print edges where matrix cell is 1 [OK]
Common Mistakes:
  • Ignoring symmetric edges in undirected graph
  • Printing zeros as edges
  • Mixing row and column indices
4. Identify the error in this adjacency matrix initialization code for a graph with 2 nodes:
int graph[2][2] = {
  {0, 1},
  {1}
};
medium
A. Second row has missing element
B. Matrix size is incorrect
C. Values should be boolean, not int
D. Initialization syntax is correct

Solution

  1. Step 1: Check each row's initialization length

    First row has 2 elements: {0,1}. Second row has only 1 element: {1}.
  2. Step 2: Understand 2D array initialization rules

    Each row must have exactly 2 elements to match declared size. Missing element causes error.
  3. Final Answer:

    Second row has missing element -> Option A
  4. Quick Check:

    Each row must match declared column size [OK]
Hint: Each row must have same number of elements as columns [OK]
Common Mistakes:
  • Assuming partial row initialization is allowed
  • Confusing matrix size with data type
  • Ignoring compiler error messages
5. You have a directed graph with 4 nodes represented by this adjacency matrix:
int graph[4][4] = {
  {0, 1, 0, 0},
  {0, 0, 1, 0},
  {0, 0, 0, 1},
  {1, 0, 0, 0}
};
Write a function in C++ that returns true if there is an edge from node u to node v, false otherwise. Which of these is correct?
hard
A. bool hasEdge(int u, int v) { return graph[v][u] == 1; }
B. bool hasEdge(int u, int v) { return graph[u][v] == 1; }
C. bool hasEdge(int u, int v) { return graph[u][v] == 0; }
D. bool hasEdge(int u, int v) { return graph[u] == graph[v]; }

Solution

  1. Step 1: Understand adjacency matrix indexing for edges

    graph[u][v] == 1 means edge from node u to node v exists.
  2. Step 2: Check each function option

    bool hasEdge(int u, int v) { return graph[u][v] == 1; } correctly returns true if edge exists. bool hasEdge(int u, int v) { return graph[v][u] == 1; } reverses indices, C checks for no edge, D compares rows incorrectly.
  3. Final Answer:

    bool hasEdge(int u, int v) { return graph[u][v] == 1; } -> Option B
  4. Quick Check:

    Check graph[u][v] == 1 for edge presence [OK]
Hint: Check graph[u][v] == 1 for edge from u to v [OK]
Common Mistakes:
  • Swapping u and v indices
  • Checking for zero instead of one
  • Comparing entire rows instead of single cell
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard