private void Add_All_Click(object sender, EventArgs e) { while (addDes.Count > 0) { AddDistance a = new AddDistance(); a = addDes.Dequeue(); StationDistance stationDistance = new StationDistance(); stationDistance.Distance1 = a.stationone; stationDistance.Distance2 = a.stationtwo; stationDistance.Distance = a.distance; db.stationDistances.Add(stationDistance); db.SaveChanges(); } updateStatus(); }
public String primAlgo() { String output = ""; double totalWeight = 0; LinkedList <int> selectedStationIDs = new LinkedList <int>(); foreach (Stations s in selectedStations) { selectedStationIDs.AddFirst(s.StationsId); } LinkedList <Stations> markedStations = new LinkedList <Stations>(); LinkedList <StationDistance> comparingEdges = new LinkedList <StationDistance>(); markedStations.AddFirst(data.First.Value); while (markedStations.Count < selectedStations.Count) { foreach (Stations s in markedStations) { foreach (StationDistance d in s.StationDistances1) { if (selectedStationIDs.Contains(d.Stations2.StationsId) && !markedStations.Contains(d.Stations2)) { comparingEdges.AddFirst(d); } } } double minWeight = int.MaxValue; StationDistance minWeightEdge = null; foreach (StationDistance d in comparingEdges) { if (d.Distance < minWeight) { minWeight = d.Distance; minWeightEdge = d; } } comparingEdges.Clear(); output += minWeight.ToString() + " " + minWeightEdge.Stations1.StationName + "->" + minWeightEdge.Stations2.StationName + Environment.NewLine; totalWeight += minWeight; markedStations.AddFirst(minWeightEdge.Stations2); } output += "Total weight " + totalWeight; return(output); }