I'm writing dijkstra algorithm,i want to create list of neighbors for each node i am writing a little bit code but my code doesn't created list of neighbors for each node. my code has a problem that doesn't distinct neighbors for each node and that's why keeps totally list of neighbors for each node.
Image[
^]
for example: Node[id] ==> (neighbor,weight)
Node[0] ==> (1,123)
Node[0] ==> (2,113)
Node[0] ==> (3,214)
Node[0] ==> (4,203)
Node[1] ==> (2,175)
Node[1] ==> (4,214)
public class Graph
{
public Dictionary<int, List<KeyValuePair<int, int>>> vertices = new Dictionary<int, List<KeyValuePair<int, int>>>();
public void AddVertex(int id, List<KeyValuePair<int, int>> edges)
{
vertices[id] = edges;
}
}
private Graph g = new Graph();
public int Id { get; set; }
private List<KeyValuePair<int, int>> dic = new List<KeyValuePair<int, int>>();
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Right)
{
var result = circleManager.HitTest(e.Location);
if (result != -1)
{
circlesSourceAndDestination.Add(circleManager.Circles[result]);
if (Count == 1)
{
Id = result;
}
else if (Count == 2)
{
var weigth = CalculateLengthSourceAndDestination(circlesSourceAndDestination);
circlesSourceAndDestination.Clear();
if (weigth < 0)
{
weigth *= -1;
}
dic.Add(new KeyValuePair<int, int>(result, weigth));
g.AddVertex(Id, dic);
Count = 0;
}
Count++;
}
}
else
{
var result = circleManager.HitTest(e.Location);
if (result != -1)
{
circleManager.Circles[circleManager.HitTest(e.Location)].Selected = true;
circleManager.Circles[result].SelectFillColor = Color.Red;
}
}
pictureBox1.Invalidate();
}
What I have tried:
i want to create list of neighbors for each node