Bird
Raised Fist0
DSA Rustprogramming~5 mins

Graph Terminology Vertices Edges Directed Undirected Weighted in DSA Rust - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a vertex in a graph?
A vertex (or node) is a fundamental unit in a graph that represents an entity or point. It can connect to other vertices through edges.
Click to reveal answer
beginner
Define an edge in a graph.
An edge is a connection or link between two vertices in a graph. It can be directed or undirected.
Click to reveal answer
beginner
What is the difference between a directed and an undirected edge?
A directed edge has a direction from one vertex to another (like a one-way street). An undirected edge has no direction and connects vertices both ways (like a two-way street).
Click to reveal answer
beginner
What does it mean if a graph is weighted?
A weighted graph has edges that carry a value or weight, representing cost, distance, or capacity between vertices.
Click to reveal answer
intermediate
Can a graph have both directed and undirected edges?
Yes, such graphs are called mixed graphs. They contain both directed and undirected edges connecting vertices.
Click to reveal answer
What is a vertex in a graph?
AA point representing an entity
BA connection between two points
CA value assigned to an edge
DA direction of an edge
Which type of edge has a direction?
ADirected edge
BUndirected edge
CWeighted edge
DMixed edge
What does a weighted edge represent?
AA vertex in the graph
BA connection without value
CA connection with a cost or distance
DA direction between vertices
In an undirected graph, edges are:
AOne-way connections
BTwo-way connections
CAlways weighted
DAlways directed
What is a mixed graph?
AA graph with no edges
BA graph with only directed edges
CA graph with only weighted edges
DA graph with both directed and undirected edges
Explain the difference between directed and undirected edges in a graph.
Think about how traffic flows on roads.
You got /3 concepts.
    Describe what a weighted graph is and why weights might be useful.
    Imagine distances between cities on a map.
    You got /3 concepts.

      Practice

      (1/5)
      1. In graph terminology, what is a vertex?
      easy
      A. A point or node in the graph where edges meet
      B. A line connecting two points in the graph
      C. A graph that has no edges
      D. A graph with weighted edges

      Solution

      1. Step 1: Understand the definition of vertex

        A vertex is a fundamental unit in a graph representing a point or node.
      2. Step 2: Differentiate vertex from edges and graph types

        Edges connect vertices; graphs can be weighted or unweighted, directed or undirected, but vertices are the points themselves.
      3. Final Answer:

        A point or node in the graph where edges meet -> Option A
      4. Quick Check:

        Vertex = point/node [OK]
      Hint: Vertices are points, edges are lines connecting them [OK]
      Common Mistakes:
      • Confusing vertices with edges
      • Thinking vertex means weighted edge
      • Mixing vertex with graph type
      2. Which of the following is the correct Rust syntax to declare an undirected edge between vertices 1 and 2 using a tuple?
      easy
      A. let edge = {1, 2};
      B. let edge = (1, 2);
      C. let edge = [1, 2];
      D. let edge = <1, 2>;

      Solution

      1. Step 1: Recall Rust tuple syntax

        Tuples in Rust are declared with parentheses and comma-separated values, e.g., (1, 2).
      2. Step 2: Check other options for correctness

        Square brackets [] are for arrays, curly braces {} are for blocks or sets (not in Rust), angle brackets <> are not used for tuples.
      3. Final Answer:

        let edge = (1, 2); -> Option B
      4. Quick Check:

        Tuple syntax uses parentheses ( ) [OK]
      Hint: Tuples use parentheses ( ), arrays use brackets [ ] [OK]
      Common Mistakes:
      • Using square brackets for tuples
      • Using curly braces instead of parentheses
      • Confusing angle brackets with tuple syntax
      3. What is the output of the following Rust code that creates a weighted directed edge and prints its components?
      struct Edge {
          from: usize,
          to: usize,
          weight: i32,
      }
      
      fn main() {
          let e = Edge { from: 3, to: 5, weight: 10 };
          println!("{} -> {} with weight {}", e.from, e.to, e.weight);
      }
      medium
      A. 3 -> 5 with weight 0
      B. 5 -> 3 with weight 10
      C. 3 -> 5 with weight 10
      D. Compilation error due to missing semicolon

      Solution

      1. Step 1: Understand struct initialization

        The struct Edge is initialized with from=3, to=5, weight=10 correctly.
      2. Step 2: Analyze the println! macro output

        The print statement outputs the from, to, and weight fields in order: "3 -> 5 with weight 10".
      3. Final Answer:

        3 -> 5 with weight 10 -> Option C
      4. Quick Check:

        Prints from-to-weight as given [OK]
      Hint: Struct fields print as assigned, watch order in println! [OK]
      Common Mistakes:
      • Swapping from and to values
      • Assuming default weight 0
      • Thinking missing semicolon causes error here
      4. Identify the error in this Rust code snippet that tries to create an undirected weighted edge:
      struct Edge {
          vertex1: usize,
          vertex2: usize,
          weight: i32,
      }
      
      fn main() {
          let e = Edge { vertex1: 1, vertex2: 2 };
          println!("Edge between {} and {} with weight {}", e.vertex1, e.vertex2, e.weight);
      }
      medium
      A. Missing weight field initialization causes a compile error
      B. vertex1 and vertex2 should be swapped
      C. println! macro syntax is incorrect
      D. Edge struct should not have weight for undirected edges

      Solution

      1. Step 1: Check struct initialization

        The Edge struct requires vertex1, vertex2, and weight fields. Weight is missing in initialization.
      2. Step 2: Understand Rust's strict initialization rules

        Rust requires all fields to be initialized; missing weight causes compile-time error.
      3. Final Answer:

        Missing weight field initialization causes a compile error -> Option A
      4. Quick Check:

        All struct fields must be initialized [OK]
      Hint: All struct fields must be given values when creating instance [OK]
      Common Mistakes:
      • Assuming missing fields default to zero
      • Thinking vertex order matters for undirected edges
      • Believing println! syntax is wrong here
      5. You want to represent a weighted undirected graph in Rust using an adjacency list. Which data structure is the best choice to store edges with weights efficiently?
      hard
      A. HashMap storing only vertex connections without weights
      B. Vec storing neighbors only, ignoring weights
      C. Vec<(usize, usize, i32)> storing all edges as tuples without adjacency
      D. Vec> where each inner Vec holds (neighbor_vertex, weight)

      Solution

      1. Step 1: Understand adjacency list for weighted graphs

        Weighted graphs need to store neighbors and weights; a Vec of Vec of tuples (neighbor, weight) fits well.
      2. Step 2: Evaluate other options

        HashMap without weights loses weight info; flat Vec of tuples lacks adjacency structure; Vec of usize ignores weights.
      3. Final Answer:

        Vec> where each inner Vec holds (neighbor_vertex, weight) -> Option D
      4. Quick Check:

        Adjacency list with (neighbor, weight) tuples is best [OK]
      Hint: Use adjacency list with (neighbor, weight) tuples for weighted graphs [OK]
      Common Mistakes:
      • Ignoring weights in adjacency list
      • Using flat edge list without adjacency
      • Using HashMap without weight info
      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