private Double[] distTo; // disTo[i] 保存的是从 v 到 i 的距离 /// <summary> /// 构造函数 /// </summary> /// <param name="g">有向加权非负权图</param> /// <param name="s">起点</param> public AcyclicSP(DirectedWeightedGraph g, int s) { edgeTo = new DirectedEdge[g.V]; distTo = new Double[g.V]; for (Int32 v = 0; v < g.V; ++v) { distTo[v] = Double.PositiveInfinity; } Topological top = new Topological(g); }
private Double[] distTo; // disTo[i] 保存的是从 v 到 i 的距离 /// <summary> /// 构造函数 /// </summary> /// <param name="g">有向加权非负权图</param> /// <param name="s">起点</param> public AcyclicSP(DirectedWeightedGraph g, int s) { edgeTo = new DirectedEdge[g.V]; distTo = new Double[g.V]; for (Int32 v = 0; v < g.V; ++v) { distTo[v] = Double.PositiveInfinity; } distTo[s] = 0.0; Topological top = new Topological(g); foreach (int v in top.Order()) { this.Relax(g, v); } }
public static void Main() { string filename = "tinyDAG.txt"; Digraph digraph = new Digraph(File.OpenText(filename)); Topological top = new Topological(digraph); if (top.IsDAG()) { foreach (int v in top.Order()) { Console.WriteLine(v); } } //符号图测试 //string filename = "jobs.txt"; //SymbolGraph digraph = new SymbolGraph(filename, '/'); //Topological top = new Topological(digraph.G); //if (top.IsDAG()) // foreach (int v in top.Order()) // Console.WriteLine(digraph.Name(v)); }