示例#1
0
        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);
        }
示例#2
0
        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);
        }