예제 #1
0
            internal static MetroEdge CreateFromTwoNodes(int u, int v)
            {
                MetroEdge res = new MetroEdge();

                res.nodes = new List <int>();
                res.nodes.Add(Math.Min(u, v));
                res.nodes.Add(Math.Max(u, v));

#if SHARPKIT //https://code.google.com/p/sharpkit/issues/detail?id=289
                res.UpdateHashKey();
#endif

                return(res);
            }
예제 #2
0
            internal static MetroEdge CreateFromTwoEdges(int v, List <int> e1, List <int> e2)
            {
                List <int> nodes = new List <int>(e1.Count + e2.Count - 1);

                if (e1[0] != v)
                {
                    for (int i = 0; i < e1.Count; i++)
                    {
                        nodes.Add(e1[i]);
                    }
                }
                else
                {
                    for (int i = e1.Count - 1; i >= 0; i--)
                    {
                        nodes.Add(e1[i]);
                    }
                }

                if (e2[0] == v)
                {
                    for (int i = 1; i < e2.Count; i++)
                    {
                        nodes.Add(e2[i]);
                    }
                }
                else
                {
                    for (int i = e2.Count - 2; i >= 0; i--)
                    {
                        nodes.Add(e2[i]);
                    }
                }

                MetroEdge res = new MetroEdge();

                res.nodes = nodes;
#if SHARPKIT //https://code.google.com/p/sharpkit/issues/detail?id=289
                res.UpdateHashKey();
#endif
                return(res);
            }
            internal static MetroEdge CreateFromTwoNodes(int u, int v) {
                MetroEdge res = new MetroEdge();
                res.nodes = new List<int>();
                res.nodes.Add(Math.Min(u, v));
                res.nodes.Add(Math.Max(u, v));

#if SHARPKIT //https://code.google.com/p/sharpkit/issues/detail?id=289
                res.UpdateHashKey();
#endif

                return res;
            }
            internal static MetroEdge CreateFromTwoEdges(int v, List<int> e1, List<int> e2) {
                List<int> nodes = new List<int>(e1.Count + e2.Count - 1);
                if (e1[0] != v) {
                    for (int i = 0; i < e1.Count; i++)
                        nodes.Add(e1[i]);
                }
                else {
                    for (int i = e1.Count - 1; i >= 0; i--)
                        nodes.Add(e1[i]);
                }

                if (e2[0] == v) {
                    for (int i = 1; i < e2.Count; i++)
                        nodes.Add(e2[i]);
                }
                else {
                    for (int i = e2.Count - 2; i >= 0; i--)
                        nodes.Add(e2[i]);
                }

                MetroEdge res = new MetroEdge();
                res.nodes = nodes;
#if SHARPKIT //https://code.google.com/p/sharpkit/issues/detail?id=289
                res.UpdateHashKey();
#endif
                return res;
            }