Esempio n. 1
0
        public void AdjacencyList_Filter_SelectesPartOfVertices()
        {
            int    vertex1 = 10;
            int    vertex2 = 20;
            int    vertex3 = 30;
            int    vertex4 = 40;
            string edge1   = "20-30";
            string edge2   = "30-40";

            AdjacencyList <int, string> adjacencyList = new AdjacencyList <int, string>();

            adjacencyList.AddVertex(vertex1);
            adjacencyList.AddVertex(vertex2);
            adjacencyList.AddVertex(vertex3);
            adjacencyList.AddVertex(vertex4);
            adjacencyList.AddEdge(vertex2, vertex3, edge1);
            adjacencyList.AddEdge(vertex3, vertex4, edge2);

            IGraph <int, string> filtered = adjacencyList.Filter((v1, v2, ed) => v1 == 20);

            Assert.Equal(2, filtered.NumVertices);
            Assert.True(filtered.HasVertex(vertex2));
            Assert.True(filtered.HasVertex(vertex3));
            Assert.Equal(edge1, filtered.FindEdge(vertex2, vertex3));
        }
Esempio n. 2
0
        public void ShortestPathSearcher_Integration_DefaultAggregativeWeight()
        {
            string vertexA = "A", vertexB = "B", vertexC = "C", vertexD = "D";

            // Graph A-B, A-C, B-D, B-A
            AdjacencyList <string, int> graph = new AdjacencyList <string, int>();

            graph.AddVertex(vertexA);
            graph.AddVertex(vertexB);
            graph.AddVertex(vertexC);
            graph.AddVertex(vertexD);
            graph.AddEdge(vertexA, vertexB, 10);
            graph.AddEdge(vertexB, vertexA, 5);
            graph.AddEdge(vertexA, vertexC, 20);
            graph.AddEdge(vertexB, vertexD, 10);

            ShortestPathSearcher <string, int>          searcher = new ShortestPathSearcher <string, int>(graph, vertexA, vertexD, (i) => i);
            IEnumerable <EdgeDescriptor <string, int> > path = searcher.FindShortestPath();

            Assert.IsNotNull(path);
            Assert.AreEqual(2, path.Count());
            EdgeDescriptor <string, int> firstDesc = path.First();

            Assert.AreEqual("B", firstDesc.Vertex1);
            Assert.AreEqual("A", firstDesc.Vertex2);
            Assert.AreEqual(5, firstDesc.Edge);
            EdgeDescriptor <string, int> lastDesc = path.Last();

            Assert.AreEqual("B", lastDesc.Vertex1);
            Assert.AreEqual("D", lastDesc.Vertex2);
            Assert.AreEqual(10, lastDesc.Edge);
        }
Esempio n. 3
0
        public void AdjacencyList_RemoveVertex_RemovesVerticesWithEdges()
        {
            int    vertex1 = 10;
            int    vertex2 = 20;
            int    vertex3 = 30;
            int    vertex4 = 40;
            string edge1   = "20-30";
            string edge2   = "30-40";

            AdjacencyList <int, string> adjacencyList = new AdjacencyList <int, string>();

            adjacencyList.AddVertex(vertex1);
            adjacencyList.AddVertex(vertex2);
            adjacencyList.AddVertex(vertex3);
            adjacencyList.AddVertex(vertex4);
            adjacencyList.AddEdge(vertex2, vertex3, edge1);
            adjacencyList.AddEdge(vertex3, vertex4, edge2);

            Assert.Equal(4, adjacencyList.NumVertices);
            Assert.Equal(edge1, adjacencyList.FindEdge(vertex2, vertex3));
            Assert.Equal(edge2, adjacencyList.FindEdge(vertex3, vertex4));

            adjacencyList.RemoveVertex(vertex2);

            Assert.Equal(3, adjacencyList.NumVertices);
            Assert.Equal(edge2, adjacencyList.FindEdge(vertex3, vertex4));
        }
Esempio n. 4
0
        public void ShortestPathSearcher_Integration_CumulativeWeight()
        {
            string vertexA = "A", vertexB = "B", vertexC = "C";

            // Graph A-B=2, A-C=3, B-C=4
            AdjacencyList <string, int> graph = new AdjacencyList <string, int>();

            graph.AddVertex(vertexA);
            graph.AddVertex(vertexB);
            graph.AddVertex(vertexC);
            graph.AddEdge(vertexA, vertexB, 2);
            graph.AddEdge(vertexA, vertexC, 3);
            graph.AddEdge(vertexB, vertexC, 4);

            ShortestPathSearcher <string, int> searcher = new ShortestPathSearcher <string, int>(graph, vertexB, vertexC, (i) => i)
            {
                PathWeightCalculation = PathWeightCalculationType.Cumulative
            };
            IEnumerable <EdgeDescriptor <string, int> > path = searcher.FindShortestPath();

            Assert.IsNotNull(path);
            Assert.AreEqual(2, path.Count());
            EdgeDescriptor <string, int> edge1 = path.First();

            Assert.AreEqual("A", edge1.Vertex1);
            Assert.AreEqual("B", edge1.Vertex2);
            Assert.AreEqual(2, edge1.Edge);
            EdgeDescriptor <string, int> edge2 = path.Last();

            Assert.AreEqual("A", edge2.Vertex1);
            Assert.AreEqual("C", edge2.Vertex2);
            Assert.AreEqual(3, edge2.Edge);
        }
Esempio n. 5
0
        /// <summary>
        /// Генерация нового случайного графа.
        /// </summary>
        /// <returns>Новый экземпляр сгенерированного графа.</returns>
        public MainGraph Generate()
        {
            var list = new AdjacencyList(vertexCount);

            // Создание связного графа с E = V - 1
            for (int i = 1; i < vertexCount; i++)
            {
                list.AddEdge(i, Utility.Rand.Next(0, i - 1));
            }

            if (vertexCount < 3)
            {
                return(AdjacencyList.GenerateGraph(list, medCount, villCount));
            }

            // Добавление новых ребер для создания циклов
            int new_edges = Utility.Rand.Next(0, vertexCount * (vertexCount - 1) / 2 - vertexCount);

            for (int e = 0; e < new_edges; e++)
            {
                int i = Utility.Rand.Next(0, vertexCount - 1);
                int j = Utility.Rand.Next(0, vertexCount - 1);

                if (i != j && !list.IsAdjacent(i, j))
                {
                    list.AddEdge(i, j);
                }
            }

            return(AdjacencyList.GenerateGraph(list, medCount, villCount));
        }
Esempio n. 6
0
        public void HasEdgeTest()
        {
            var list = new AdjacencyList <int>();

            list.AddEdge(0, 1);
            list.AddEdge(0, 2);
            list.AddEdge(1, 2);

            Assert.True(list.HasEdge(0, 1));
            Assert.True(list.HasEdge(0, 2));
            Assert.True(list.HasEdge(1, 2));
            // Out of bounds edge
            Assert.False(list.HasEdge(3, 1));
        }
Esempio n. 7
0
        public void RemoveEdgeTest()
        {
            var list = new AdjacencyList <int>();

            list.AddEdge(0, 1);
            list.AddEdge(0, 2);
            list.AddEdge(1, 2);

            Assert.True(list.RemoveEdge(0, 1));
            Assert.True(list.RemoveEdge(0, 2));
            Assert.True(list.RemoveEdge(1, 2));
            // Cannot remove again
            Assert.False(list.RemoveEdge(0, 1));
        }
Esempio n. 8
0
        public void TestAddEdgeSourceDoesNotExist()
        {
            AdjacencyList <int> graph = new AdjacencyList <int>();

            graph.AddNode(2);

            bool success = graph.AddEdge(1, 2);

            Assert.IsFalse(success);
        }
Esempio n. 9
0
        public void TestAddEdgeBothDoNotExist()
        {
            AdjacencyList <int> graph = new AdjacencyList <int>();

            graph.AddNode(1);
            graph.AddNode(2);

            bool success = graph.AddEdge(3, 4);

            Assert.IsFalse(success);
        }
Esempio n. 10
0
        public void AdjacencyList_FindEdge_LooksForEdgesByVertices()
        {
            int    vertex1 = 10;
            int    vertex2 = 20;
            int    vertex3 = 30;
            int    vertex4 = 40;
            string edge1   = "20-30";
            string edge2   = "30-40";

            AdjacencyList <int, string> adjacencyList = new AdjacencyList <int, string>();

            adjacencyList.AddVertex(vertex1);
            adjacencyList.AddVertex(vertex2);
            adjacencyList.AddVertex(vertex3);
            adjacencyList.AddVertex(vertex4);
            adjacencyList.AddEdge(vertex2, vertex3, edge1);
            adjacencyList.AddEdge(vertex3, vertex4, edge2);

            Assert.Equal(edge1, adjacencyList.FindEdge(vertex2, vertex3));
            Assert.Equal(edge2, adjacencyList.FindEdge(vertex3, vertex4));
        }
Esempio n. 11
0
        public void TestAddEdge()
        {
            AdjacencyList <int> graph = new AdjacencyList <int>();

            graph.AddNode(1);
            graph.AddNode(2);

            bool success = graph.AddEdge(1, 2);

            Assert.AreEqual(2, graph.Count);
            Assert.IsTrue(success);
        }
Esempio n. 12
0
        public void OutEdgesTest()
        {
            var list = new AdjacencyList <int>();

            list.AddEdge(0, 1);
            list.AddEdge(1, 0);
            list.AddEdge(0, 2);
            list.AddEdge(2, 0);
            list.AddEdge(1, 2);
            list.AddEdge(2, 1);

            // Outgoing Edges
            Assert.Equal(new List <int>()
            {
                1, 2
            }, list.OutEdges(0));
            Assert.Equal(new List <int>()
            {
                0, 2
            }, list.OutEdges(1));
            Assert.Equal(new List <int>()
            {
                0, 1
            }, list.OutEdges(2));
        }
Esempio n. 13
0
        public void GraphExtensions_GetOrderedEdges_ReturnsOrderedEdgeDescriptors()
        {
            IGraph <string, string> graph = new AdjacencyList <string, string>();

            graph.AddVertex("BBB");
            graph.AddVertex("AAA");
            graph.AddVertex("ABA");
            graph.AddVertex("BAB");

            graph.AddEdge("ABA", "BBB", "aba-bbb");
            graph.AddEdge("ABA", "AAA", "aba-aaa");
            graph.AddEdge("ABA", "BAB", "aba-bab");
            // Those opposite edges will be ignored
            graph.AddEdge("AAA", "ABA", "aaa-aba");
            graph.AddEdge("BBB", "ABA", "bbb-aba");

            var edges = graph.FindVertexDescriptor("ABA").GetOrderedEdges(StringComparer.CurrentCulture);

            Assert.Equal(3, edges.Count());
            Assert.Equal("AAA", edges.ElementAt(0).Vertex2);
            Assert.Equal("BAB", edges.ElementAt(1).Vertex2);
            Assert.Equal("BBB", edges.ElementAt(2).Vertex2);
        }
Esempio n. 14
0
 protected void LoadInput()
 {
     //first ensure all the dict are initialized
     foreach (var node in _nodes)
     {
         _adjacencyList.AddVertex(node);
     }
     //make a link between nodes that have summed values that mod 3 are equals to 0
     foreach (var node in _nodes)
     {
         foreach (var innerNode in _nodes)
         {
             //when node + innerNode is divisible by three add a link between them
             //e.g. 1 will have edges with 2 and 5
             if ((node + innerNode) % 3 != 0 || node == innerNode)
             {
                 continue;
             }
             _adjacencyList.AddEdge(node, innerNode);
             _adjacencyList.AddEdge(innerNode, node);
         }
     }
 }
Esempio n. 15
0
        public void TestGetEnumerator()
        {
            List <int[]> expecteds = new List <int[]>
            {
                new int[] { 2, 3 },
                new int[] { 3 },
                new int[] { 1 },
            };

            AdjacencyList <int> graph = new AdjacencyList <int>();

            int one   = 1;
            int two   = 2;
            int three = 3;

            graph.AddNode(one);
            graph.AddNode(two);
            graph.AddNode(three);

            graph.AddEdge(one, two);
            graph.AddEdge(one, three);
            graph.AddEdge(two, three);
            graph.AddEdge(three, one);


            IEnumerator <KeyValuePair <int, List <int> > > enumerator = graph.GetEnumerator();

            Assert.IsNotNull(enumerator);

            KeyValuePair <int, List <int> > current;

            while (enumerator.MoveNext())
            {
                current = enumerator.Current;
                Assert.AreEqual(expecteds[current.Key - 1], current.Value);
            }
        }
Esempio n. 16
0
        public void PrintNodes()
        {
            var graph = new AdjacencyList(5);

            graph.AddEdge(0, 1);
            graph.AddEdge(0, 4);
            graph.AddEdge(1, 2);
            graph.AddEdge(1, 3);
            graph.AddEdge(1, 4);
            graph.AddEdge(2, 3);
            graph.AddEdge(3, 4);

            graph.PrintGraph();
        }
Esempio n. 17
0
    void addEdgeToAdjacencyListAfterValidation(int source, int target, float weight)
    {
        int smaller = source;
        int bigger  = target;

        if (target < source)
        {
            smaller = target;
            bigger  = source;
        }

        if (adjacencyList.isAdjacent(smaller, bigger) == false)
        {
            adjacencyList.AddEdge(smaller, bigger, weight, nodeContainer);
        }
    }
Esempio n. 18
0
        public void AddEdgeTest()
        {
            var list = new AdjacencyList <int>();

            // Add edges
            Assert.True(list.AddEdge(0, 1));
            Assert.True(list.AddEdge(1, 0));

            Assert.True(list.AddEdge(0, 2));
            Assert.True(list.AddEdge(2, 0));

            Assert.True(list.AddEdge(1, 2));
            Assert.True(list.AddEdge(2, 1));

            // Cannot add duplicate edges
            Assert.False(list.AddEdge(1, 2));
            Assert.False(list.AddEdge(2, 1));
        }
Esempio n. 19
0
        public void TestGetAccessor()
        {
            AdjacencyList <int> graph = new AdjacencyList <int>();

            int one = 1;
            int two = 2;

            graph.AddNode(one);
            graph.AddNode(two);

            bool        success  = graph.AddEdge(one, two);
            IList <int> oneEdges = graph[one];
            IList <int> twoEdges = graph[two];

            Assert.IsTrue(success);
            Assert.AreEqual(one, oneEdges.Count);
            Assert.AreEqual(two, oneEdges[0]);

            Assert.AreEqual(0, twoEdges.Count);
        }
Esempio n. 20
0
        public void ReflectiveEdgeTest()
        {
            var list = new AdjacencyList <int>();

            // Add edges
            Assert.True(list.AddEdge(0, 1));
            Assert.True(list.AddEdge(1, 0));

            Assert.True(list.AddEdge(0, 2));
            Assert.True(list.AddEdge(2, 0));

            Assert.True(list.AddEdge(1, 2));
            Assert.True(list.AddEdge(2, 1));

            // Has Edges
            Assert.True(list.HasEdge(1, 0));
            Assert.True(list.HasEdge(2, 0));
            Assert.True(list.HasEdge(2, 1));
        }
Esempio n. 21
0
        public void Add_Edgs()
        {
            adjList.Add("A");
            adjList.Add("B");
            adjList.Add("C");
            adjList.Add("D");
            adjList.Add("E");
            adjList.AddEdge("A", "B");
            adjList.AddEdge("A", "C");
            adjList.AddEdge("A", "D");
            var node = adjList[0]._firstArc;
            int i    = 0;

            do
            {
                i++;
                node = node.nextArc;
            } while (node != null);
            Assert.AreEqual(3, i);
        }
Esempio n. 22
0
    private void Start()
    {
#if UNITY_IOS || UNITY_ANDROID
        mobileControls.SetActive(true);
#endif
        fsm = GetComponent <FloodSoundManager>();

        playerCar       = player.GetComponent <PlayerCar>();
        player.position = startObj.position;
        referenceGraph  = new AdjacencyList <Vector3>(Vector3.zero);
        pathingGraph    = new AdjacencyList <Vector3>(Vector3.zero);


        for (int i = 0; i < numBlocksHorizontal; i++)
        {
            for (int j = 0; j < numBlocksVertical; j++)
            {
                Vector3 pos = new Vector3(i * blockDist, 0, j * blockDist);
                foreach (Vector3 neighbor in GetNeighbors(pos))
                {
                    referenceGraph.AddEdge(pos, neighbor);
                    pathingGraph.AddEdge(pos, neighbor);
                }
            }
        }

        //Remove edges until there is no path found
        List <KeyValuePair <Vector3, Vector3> > removedEdges = new List <KeyValuePair <Vector3, Vector3> >();
        while (AStar(referenceGraph, startObj.position, endObj.position, out List <Vector3> pathIter))
        {
            path = pathIter;
            Vector3        start     = referenceGraph.GetRandomVertex();
            List <Vector3> neighbors = referenceGraph.FindNeighbours(start);
            Vector3        neighbor  = neighbors[Random.Range(0, neighbors.Count)];
            referenceGraph.RemoveEdge(start, neighbor);
            removedEdges.Add(new KeyValuePair <Vector3, Vector3>(start, neighbor));
        }

        //Add the last removed edge back in
        KeyValuePair <Vector3, Vector3> lastEdge = removedEdges.Last();
        removedEdges.RemoveAt(removedEdges.Count - 1);
        referenceGraph.AddEdge(lastEdge.Key, lastEdge.Value);

        //face the player's car in the direction of the first waypoint
        float startDir = v3ToInt[(path[1] - path[0]).normalized];
        player.eulerAngles = new Vector3(0f, startDir, 0f);

        List <Vector3> startNeighborsMids = referenceGraph.FindNeighbours(startObj.position).Select(i => (startObj.position + i) / 2).ToList();

        //spawn in roadblock prefabs along 3/4s of blocked edges
        int endIdx = removedEdges.Count * 3 / 4;
        for (int i = 0; i < endIdx; i++)
        {
            KeyValuePair <Vector3, Vector3> edge = removedEdges[i];
            GameObject toInstantiate             = staticRoadBlockPrefabs[Random.Range(0, staticRoadBlockPrefabs.Count)];
            Vector3    midpoint = (edge.Key + edge.Value) / 2;
            if (startNeighborsMids.Any(x => x == midpoint))
            {
                continue;
            }

            Quaternion rot = Quaternion.Euler(0f, Mathf.Abs((edge.Key - edge.Value).x) > 0f ? 90f : 0f, 0f);
            Instantiate(toInstantiate, midpoint, rot, obstacles.transform);
            pathingGraph.RemoveEdge(edge.Key, edge.Value);
        }

        //spawn in obstacles along valid edges
        HashSet <Vector3> edgeSet = new HashSet <Vector3>();

        //prevent items from spawning on edges surrounding player's spawn point
        startNeighborsMids.ForEach(i => edgeSet.Add(i));
        foreach (Vector3 vertex in referenceGraph.GetAllEdges())
        {
            foreach (Vector3 neighbor in referenceGraph.FindNeighbours(vertex))
            {
                Vector3 mid = (vertex + neighbor) / 2;
                bool    onX = Mathf.Abs((vertex - neighbor).x) > 0;

                if (!edgeSet.Contains(mid) && Random.Range(0, 2) > 0)
                {
                    GameObject toInstantiate            = roadObstaclePrefabs[Random.Range(0, roadObstaclePrefabs.Count)];
                    float      randStreetOffsetLong     = Random.Range(-blockDist / 2, blockDist / 2);
                    float      randStreetOffsetWide     = Random.Range(-roadWidth / 4, roadWidth / 4);
                    Vector3    boundedRandomPosInStreet = mid;
                    boundedRandomPosInStreet += onX ? new Vector3(randStreetOffsetLong, 0f, randStreetOffsetWide) : new Vector3(randStreetOffsetWide, 0f, randStreetOffsetLong);
                    Quaternion rot = Quaternion.Euler(0f, onX ? Random.Range(60, 120) : Random.Range(-30, 30), 0f);
                    Instantiate(toInstantiate, boundedRandomPosInStreet, rot, obstacles.transform);
                }

                if (!edgeSet.Contains(mid) && Random.Range(0, 3) > 0)
                {
                    GameObject toInstantiate            = puddles[Random.Range(0, puddles.Count)];
                    float      randStreetOffsetLong     = Random.Range(-blockDist / 2, blockDist / 2);
                    float      randStreetOffsetWide     = Random.Range(-roadWidth / 4, roadWidth / 4);
                    Vector3    boundedRandomPosInStreet = mid;
                    boundedRandomPosInStreet += onX ? new Vector3(randStreetOffsetLong, 0f, randStreetOffsetWide) : new Vector3(randStreetOffsetWide, 0f, randStreetOffsetLong);
                    Quaternion rot = Quaternion.Euler(0f, Random.Range(0, 360), 0f);
                    Instantiate(toInstantiate, boundedRandomPosInStreet, rot, obstacles.transform);
                }
                edgeSet.Add(mid);
            }
        }

        fullPathLength = path.Count;
        StartCoroutine(UpdatePathOnDelay(pathUpdateDelay));
        StartCoroutine(EndGameCheckOnDelay(endGameCheckDelay, endObj.position, new Vector3(roadWidth, roadWidth, roadWidth) / 2f, playerLayer));
    }
Esempio n. 23
0
    public CityUtil()
    {
        city_dict.Add(0, "沈阳");
        city_dict.Add(1, "北京");
        city_dict.Add(2, "天津");
        city_dict.Add(3, "石家庄");
        city_dict.Add(4, "济南");
        city_dict.Add(5, "郑州");
        city_dict.Add(6, "南京");
        city_dict.Add(7, "杭州");
        city_dict.Add(8, "上海");
        city_dict.Add(9, "合肥");

        city_list.AddVertex("沈阳");
        city_list.AddVertex("北京");
        city_list.AddVertex("天津");
        city_list.AddVertex("石家庄");
        city_list.AddVertex("济南");
        city_list.AddVertex("郑州");
        city_list.AddVertex("南京");
        city_list.AddVertex("杭州");
        city_list.AddVertex("上海");
        city_list.AddVertex("合肥");

        city_list.AddEdge("合肥", "杭州");
        city_mapping_list[0] = new CityMapping(0, "合肥", "杭州");

        city_list.AddEdge("合肥", "郑州");
        city_mapping_list[1] = new CityMapping(1, "合肥", "郑州");


        city_list.AddEdge("杭州", "郑州");
        city_mapping_list[2] = new CityMapping(2, "杭州", "郑州");

        city_list.AddEdge("杭州", "南京");
        city_mapping_list[3] = new CityMapping(3, "杭州", "南京");

        city_list.AddEdge("杭州", "上海");
        city_mapping_list[4] = new CityMapping(4, "杭州", "上海");


        city_list.AddEdge("郑州", "南京");
        city_mapping_list[5] = new CityMapping(5, "郑州", "南京");

        city_list.AddEdge("郑州", "石家庄");
        city_mapping_list[6] = new CityMapping(6, "郑州", "石家庄");


        city_list.AddEdge("南京", "石家庄");
        city_mapping_list[7] = new CityMapping(7, "南京", "石家庄");

        city_list.AddEdge("南京", "天津");
        city_mapping_list[8] = new CityMapping(8, "南京", "天津");

        city_list.AddEdge("南京", "济南");
        city_mapping_list[9] = new CityMapping(9, "南京", "济南");

        city_list.AddEdge("南京", "上海");
        city_mapping_list[10] = new CityMapping(10, "南京", "上海");


        city_list.AddEdge("上海", "济南");
        city_mapping_list[11] = new CityMapping(11, "上海", "济南");


        city_list.AddEdge("石家庄", "济南");
        city_mapping_list[12] = new CityMapping(12, "石家庄", "济南");


        city_list.AddEdge("石家庄", "北京");
        city_mapping_list[13] = new CityMapping(13, "石家庄", "北京");

        city_list.AddEdge("济南", "天津");
        city_mapping_list[14] = new CityMapping(14, "济南", "天津");


        city_list.AddEdge("北京", "沈阳");
        city_mapping_list[15] = new CityMapping(15, "北京", "沈阳");

        city_list.AddEdge("天津", "沈阳");
        city_mapping_list[16] = new CityMapping(16, "天津", "沈阳");

        city_list.AddEdge("合肥", "济南");
        city_mapping_list[17] = new CityMapping(17, "合肥", "济南");

        city_list.AddEdge("郑州", "济南");
        city_mapping_list[18] = new CityMapping(18, "郑州", "济南");

        city_tikcet_mapping["上海"] = new List <string>();
        city_tikcet_mapping["上海"].Add("杭州");

        city_tikcet_mapping["杭州"] = new List <String>();
        city_tikcet_mapping["杭州"].Add("南京");

        city_tikcet_mapping["南京"] = new List <string>();
        city_tikcet_mapping["南京"].Add("合肥");
        city_tikcet_mapping["南京"].Add("郑州");

        city_tikcet_mapping["合肥"] = new List <String>();
        city_tikcet_mapping["合肥"].Add("郑州");
        city_tikcet_mapping["合肥"].Add("济南");

        city_tikcet_mapping["郑州"] = new List <String>();
        city_tikcet_mapping["郑州"].Add("石家庄");
        city_tikcet_mapping["郑州"].Add("济南");


        city_tikcet_mapping["济南"] = new List <String>();
        city_tikcet_mapping["济南"].Add("石家庄");
        city_tikcet_mapping["济南"].Add("天津");

        city_tikcet_mapping["石家庄"] = new List <String>();
        city_tikcet_mapping["石家庄"].Add("北京");

        city_tikcet_mapping["北京"] = new List <String>();
        city_tikcet_mapping["北京"].Add("沈阳");


        city_tikcet_mapping["天津"] = new List <String>();
        city_tikcet_mapping["天津"].Add("北京");
        city_tikcet_mapping["天津"].Add("沈阳");
    }
Esempio n. 24
0
 public void Add(T source, T target)
 {
     _adjacencyList.AddEdge(source, target, 0);
 }
Esempio n. 25
0
 public virtual Edge AddEdge(Vertex source, Vertex target, int weight) => adjacencyList.AddEdge(source, target, weight);