protected __long__[] GetInitializedDistances(int start)
        {
            var dist = new __long__[V];

            for (var i = 0; i < V; i++)
            {
                dist[i] = Infinity;
            }
            dist[start] = 0;
            return(dist);
        }
 public void AddUndirectedEdge(int v1, int v2, __long__ cost)
 {
     AddEdge(v1, v2, cost);
     AddEdge(v2, v1, cost);
 }
 public void AddEdge(int from, int to, __long__ cost)
 {
     Edges[from].Add(new Edge {
         To = to, Cost = cost
     });
 }