コード例 #1
0
ファイル: DAGSP.cs プロジェクト: allanma88/SampleCode
        public void DAG(Digraph g, int s)
        {
            Initialize(g, s);
            List <int> V = g.TopologicalSort();

            foreach (int u in V)
            {
                foreach (int v in g.Adj(u))
                {
                    Relax(g, u, v);
                }
            }
        }
コード例 #2
0
        public void Dijkstra(Digraph g, int s)
        {
            Initialize(g, s);

            List <int> S    = new List <int>();
            MinHeap    heap = new MinHeap(g.V, g.D);

            while (!heap.IsEmpty)
            {
                int u = heap.ExtractMin();
                S.Add(u);
                foreach (var v in g.Adj(u))
                {
                    if (Relax(g, u, v))
                    {
                        heap.Decrease(v, g.D[v]);
                    }
                }
            }
        }