using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
public List<Vertex> Vertices;
Vertices = new List<Vertex>();
edges = new List<Edge>();
while (Vertices.Count > 0)
Vertex smallest = ExtractSmallest();
List<Vertex> adjacentVertices = AdjacentRemainingVertices(smallest);
int size = adjacentVertices.Count;
for (int i = 0; i < size; ++i)
Vertex adjacent = adjacentVertices.ElementAt(i);
float distance = Distance(smallest, adjacent) + smallest.distanceFromStart;
if (distance < adjacent.distanceFromStart)
adjacent.distanceFromStart = distance;
adjacent.previous = smallest;
public Vertex ExtractSmallest(){
public class Vertex : IComparable<Vertex>
public IList<Edge> Adjacents
public Vertex(string val)
Adjacents = new List<Edge>();
public Edge AddAdjacent(Vertex to, int weight)
var edge = new Edge(this, to, weight);
public int CompareTo(Node a)
return Distance.CompareTo(a.Distance);
public override string ToString(){
public Edge(Vertex from, Vertex to, int weight)