private void GeneratePath(ref DijkstraReport report, int[] path, int i) { if (path[i] == -1) { return; } GeneratePath(ref report, path, path[i]); report.Path.Add(i); }
private DijkstraFullReport SaveDijkstraReport(int source, int[] distance, int length, int[] path, DijkstraFullReport fullReport) { List <DijkstraReport> reportList = new List <DijkstraReport>(); for (int i = 0; i < length; i++) { DijkstraReport report = new DijkstraReport() { Vertex = i, DistanceFromSource = distance[i], Path = new List <int>() }; report.Path.Add(source); GeneratePath(ref report, path, i); reportList.Add(report); } fullReport.Reports = reportList; return(fullReport); }