Discover how graphs turn messy connections into clear maps you can explore and understand!
Why Graph Terminology Vertices Edges Directed Undirected Weighted in DSA C#?
Imagine you want to map all your friends and how they are connected to each other. You try to write down every connection on paper, but soon it becomes messy and confusing.
You also want to know who is friends with whom, if the friendship is one-way or two-way, and if some friendships are stronger than others.
Writing connections manually is slow and easy to mess up. You might forget some links or mix up directions.
It is hard to see the whole picture or answer questions like "Who is connected to whom?" or "Which friendships are stronger?"
Graphs let you organize connections clearly using vertices (points) and edges (lines).
Vertices represent friends, edges represent friendships.
Directed edges show one-way connections, undirected edges show two-way.
Weighted edges add strength or cost to connections.
This makes it easy to store, explore, and analyze relationships.
string[] friends = {"Alice", "Bob", "Charlie"};
// Manually track connections with notes or lists
// No clear structure for direction or weightclass Graph { Dictionary<string, List<(string, int)>> adjacencyList = new Dictionary<string, List<(string, int)>>(); // Add vertices and edges with direction and weight }
Graphs let you model and solve complex connection problems clearly and efficiently.
Social networks use graphs to show who follows whom, who is friends with whom, and how strong those connections are.
Vertices are points or nodes representing entities.
Edges connect vertices and can be directed or undirected.
Weighted edges carry extra information like strength or cost.
Practice
Solution
Step 1: Understand graph components
A graph consists of points called nodes and connections called edges.Step 2: Identify the term for nodes
The points or nodes where edges meet are called vertices.Final Answer:
Vertices -> Option AQuick Check:
Nodes = Vertices [OK]
- Confusing edges with vertices
- Thinking weights are nodes
- Mixing paths with vertices
Solution
Step 1: Understand adjacency list representation
An adjacency list uses a dictionary mapping each vertex to a list of connected vertices.Step 2: Check the correct C# syntax
Dictionary correctly represents a graph where each int key has a list of connected nodes.Final Answer:
Dictionary<int, List<int>> graph = new Dictionary<int, List<int>>(); -> Option CQuick Check:
Adjacency list = Dictionary with List values [OK]
- Using List<int> alone
- Using array instead of dictionary
- Using Dictionary which stores single values
var graph = new Dictionary>();
graph[1] = new List<(int, int)> { (2, 5), (3, 10) };
graph[2] = new List<(int, int)> { (1, 5), (3, 3) };
graph[3] = new List<(int, int)> { (1, 10), (2, 3) };
// What is the weight of the edge between vertex 2 and vertex 3?Solution
Step 1: Locate edge from vertex 2 to 3
In graph[2], the list contains (1,5) and (3,3). The tuple (3,3) means vertex 3 with weight 3.Step 2: Identify the weight value
The weight of the edge between 2 and 3 is 3.Final Answer:
3 -> Option DQuick Check:
Edge (2,3) weight = 3 [OK]
- Confusing vertex numbers
- Picking weight from wrong tuple
- Adding weights incorrectly
var graph = new Dictionary();
graph[1] = new List<int> { 2 };
// Add edge from 2 to 1
graph[2].Add(1);
What is the cause of the error?Solution
Step 1: Check initialization of graph[2]
graph[2] is not assigned any list before calling Add, so it is null.Step 2: Understand why Add causes error
Calling Add on null causes a NullReferenceException at runtime.Final Answer:
graph[2] is not initialized before adding -> Option AQuick Check:
Null list causes error [OK]
- Assuming dictionary auto-initializes lists
- Thinking undirected graphs disallow adding edges
- Confusing syntax error with runtime error
var graph = new Dictionary>
{
{1, new List<(int, int)>{ (2, 4), (3, 1) }},
{2, new List<(int, int)>{ (3, 2) }},
{3, new List<(int, int)>{ (4, 7) }},
{4, new List<(int, int)>{}}
};
// What is the total weight of the path 1 -> 3 -> 4?Solution
Step 1: Find weight from 1 to 3
From graph[1], edge to 3 has weight 1.Step 2: Find weight from 3 to 4
From graph[3], edge to 4 has weight 7.Step 3: Calculate total path weight
Total weight = 1 + 7 = 8.Final Answer:
8 -> Option BQuick Check:
1->3=1 + 3->4=7 = 8 [OK]
- Adding wrong edges
- Ignoring direction of edges
- Using wrong weights from graph
Ready to prove it?
Pass the test and this pattern moves unknown
