示例#1
0
        //返回一个图的副本,但将其中所有边的方向反转
        public Digraph Reverse()
        {
            var r = new Digraph(V);

            for (int v = 0; v < V; v++)
            {
                foreach (var w in adj[v])
                {
                    r.AddEdge(w, v);
                }
            }
            return(r);
        }
示例#2
0
        public SymbolGraph(string stream, char sp)
        {
            dic = new Dictionary <string, int>();
            using (var reader = new StreamReader(stream)) {
                while (reader.Peek() > -1)
                {
                    var a = reader.ReadLine().Split(sp);
                    for (int i = 0; i < a.Length; i++)
                    {
                        if (!dic.ContainsKey(a[i]))
                        {
                            dic.Add(a[i], dic.Count);
                        }
                    }
                }
                keys = new string[dic.Count];
                foreach (var item in dic)
                {
                    keys[item.Value] = item.Key;
                }

                G    = new Graph(dic.Count);
                DirG = new Digraph(dic.Count);
                reader.BaseStream.Seek(0, SeekOrigin.Begin);
                while (reader.Peek() > -1)
                {
                    var a = reader.ReadLine().Split(sp);
                    var v = dic[a[0]];
                    for (int i = 1; i < a.Length; i++)
                    {
                        G.AddEdge(v, dic[a[i]]);
                        DirG.AddEdge(v, dic[a[i]]);
                    }
                }
            }
        }