Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Dictionary<T, long> Dijkstra(T node)
- {
- ClearVisited();
- _visited[node] = true;
- var currentNode = _adjacencyList[node];
- InstantiateAllNodesList();
- foreach (var item in _allNodes)
- {
- if (!currentNode.ContainsKey(item))
- {
- currentNode.Add(item, Int32.MaxValue);
- }
- }
- Dictionary<T, long> dists = new Dictionary<T, long>();
- for (int i = 0; i < _allNodes.Count; ++i)
- {
- dists.Add(_allNodes[i], currentNode[_allNodes[i]]);
- }
- foreach (var item in currentNode)
- {
- Console.WriteLine($"{item.Key.ToString()} --- {item.Value}");
- }
- foreach (var element in _allNodes)
- {
- long min = Int32.MaxValue;
- T w = _allNodes[0];
- foreach (var nextElement in _allNodes)
- {
- if (!_visited[nextElement] && dists[nextElement] < min)
- {
- min = dists[nextElement];
- w = nextElement;
- }
- }
- _visited[w] = true;
- foreach (var nextElement in _allNodes)
- {
- long dist = dists[w] + this[w, nextElement];
- if (!_visited[nextElement] && dist < dists[nextElement])
- {
- dists[nextElement] = dist;
- }
- }
- }
- return dists;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement