Bird
Raised Fist0
DSA Goprogramming~10 mins

Adjacency Matrix Representation in DSA Go - Interactive Practice

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

Complete the code to initialize an adjacency matrix with zeros.

DSA Go
matrix := make([][]int, n)
for i := 0; i < n; i++ {
    matrix[i] = make([]int, [1])
}
Drag options to blanks, or click blank then click option'
A1
B0
Cn
Dlen(matrix)
Attempts:
3 left
💡 Hint
Common Mistakes
Using 0 or 1 as the length of inner slices instead of n.
Using len(matrix) which is correct here but less clear than n.
2fill in blank
medium

Complete the code to add an edge from vertex u to vertex v in the adjacency matrix.

DSA Go
matrix[u][[1]] = 1
Drag options to blanks, or click blank then click option'
Au
Bv
C0
Dn
Attempts:
3 left
💡 Hint
Common Mistakes
Using u as the second index instead of v.
Using 0 or n which are not vertex indices.
3fill in blank
hard

Fix the error in the code to check if there is an edge from vertex x to vertex y.

DSA Go
if matrix[[1]][y] == 1 {
    fmt.Println("Edge exists")
}
Drag options to blanks, or click blank then click option'
Ax
By
C0
Dn
Attempts:
3 left
💡 Hint
Common Mistakes
Using y as the first index instead of x.
Using 0 or n which are not vertex indices.
4fill in blank
hard

Fill both blanks to correctly iterate over all edges in the adjacency matrix.

DSA Go
for [1] := 0; [1] < n; [1]++ {
    for [2] := 0; [2] < n; [2]++ {
        if matrix[[1]][[2]] == 1 {
            fmt.Printf("Edge from %d to %d\n", [1], [2])
        }
    }
}
Drag options to blanks, or click blank then click option'
Ai
Bj
Ck
Dx
Attempts:
3 left
💡 Hint
Common Mistakes
Using the same variable for both loops.
Using variables not declared or unrelated.
5fill in blank
hard

Fill all three blanks to create a function that returns true if there is an edge from a to b.

DSA Go
func hasEdge(matrix [][]int, [1] int, [2] [3]) bool {
    return matrix[[1]][[2]] == 1
}
Drag options to blanks, or click blank then click option'
Aa
Bb
Cint
Dbool
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong parameter names or missing types.
Using bool as parameter type which is incorrect here.

Practice

(1/5)
1. What does an adjacency matrix represent in graph data structures?
easy
A. A 2D array showing connections between nodes
B. A list of nodes with their neighbors
C. A sequence of edges in order
D. A tree structure of nodes

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 A
  4. Quick Check:

    Adjacency matrix = 2D array [OK]
Hint: Adjacency matrix is always a 2D grid of node connections [OK]
Common Mistakes:
  • Confusing adjacency matrix with adjacency list
  • Thinking it stores edges as a list
  • Assuming it represents a tree only
2. Which of the following is the correct way to declare a 3x3 adjacency matrix in Go?
easy
A. var matrix [3][3]int
B. matrix := make([]int, 3)
C. var matrix [][]int = make([][]int, 3)
D. matrix := [3]int{3}

Solution

  1. Step 1: Understand Go array declaration

    In Go, a fixed-size 2D array is declared as [rows][cols]type.
  2. Step 2: Check each option

    var matrix [3][3]int declares a 3x3 int array correctly. matrix := make([]int, 3) is a 1D slice. var matrix [][]int = make([][]int, 3) is a slice of slices but incomplete. matrix := [3]int{3} is a 1D array with wrong initialization.
  3. Final Answer:

    var matrix [3][3]int -> Option A
  4. Quick Check:

    Fixed 2D array = [3][3]int [OK]
Hint: Use [rows][cols]type for fixed 2D arrays in Go [OK]
Common Mistakes:
  • Using slices instead of arrays for fixed size
  • Incorrect initialization syntax
  • Confusing 1D and 2D declarations
3. Given the following Go code, what is the printed adjacency matrix?
package main
import "fmt"
func main() {
  var graph [3][3]int
  graph[0][1] = 1
  graph[1][2] = 1
  graph[2][0] = 1
  for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
      fmt.Print(graph[i][j], " ")
    }
    fmt.Println()
  }
}
medium
A. 0 0 1 1 0 0 0 1 0
B. 1 0 0 0 1 0 0 0 1
C. 0 1 0 0 0 1 1 0 0
D. 0 1 1 1 0 1 1 1 0

Solution

  1. Step 1: Trace assignments to the matrix

    graph[0][1] = 1 means node 0 connects to 1; graph[1][2] = 1 means node 1 connects to 2; graph[2][0] = 1 means node 2 connects to 0.
  2. Step 2: Print matrix row by row

    Row 0: 0 1 0; Row 1: 0 0 1; Row 2: 1 0 0.
  3. Final Answer:

    0 1 0 0 0 1 1 0 0 -> Option C
  4. Quick Check:

    Edges set match matrix rows [OK]
Hint: Map edges to matrix cells row-wise [OK]
Common Mistakes:
  • Mixing row and column indices
  • Assuming symmetric matrix for directed graph
  • Forgetting zero initialization
4. Identify the error in this Go code snippet for creating an adjacency matrix:
var graph [][]int
for i := 0; i < 3; i++ {
  graph[i] = make([]int, 3)
}
medium
A. graph should be a 1D slice
B. make([]int, 3) is incorrect syntax
C. Loop should run from 1 to 3
D. graph is not initialized before assignment

Solution

  1. Step 1: Check graph slice initialization

    graph is declared but not initialized with length, so graph[i] access causes runtime error.
  2. Step 2: Fix initialization

    graph should be initialized with length 3 before assigning inner slices, e.g., graph = make([][]int, 3).
  3. Final Answer:

    graph is not initialized before assignment -> Option D
  4. Quick Check:

    Initialize outer slice before indexing [OK]
Hint: Initialize slices before indexing to avoid runtime errors [OK]
Common Mistakes:
  • Forgetting to initialize outer slice
  • Confusing slice length and capacity
  • Incorrect loop ranges
5. You have an undirected graph with 4 nodes. Which code snippet correctly updates the adjacency matrix to add an edge between node 1 and node 3?
hard
A. graph[1][3] = 1
B. graph[1][3] = 1; graph[3][1] = 1
C. graph[3][1] = 1
D. graph[1][1] = 1; graph[3][3] = 1

Solution

  1. Step 1: Understand undirected graph edge representation

    In undirected graphs, edges are bidirectional, so adjacency matrix must be symmetric.
  2. Step 2: Update both directions in matrix

    Set graph[1][3] = 1 and graph[3][1] = 1 to represent the edge correctly.
  3. Final Answer:

    graph[1][3] = 1; graph[3][1] = 1 -> Option B
  4. Quick Check:

    Undirected edge updates both matrix cells [OK]
Hint: Update both [i][j] and [j][i] for undirected edges [OK]
Common Mistakes:
  • Updating only one direction for undirected graph
  • Setting diagonal elements instead of edge cells
  • Confusing node indices
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