static void Main(string[] args)
        {
            MyGraph <string> graph = new MyGraph <string>();

            var a = graph.AddVertex("a");
            var b = graph.AddVertex("b");
            var c = graph.AddVertex("c");
            var d = graph.AddVertex("d");
            var e = graph.AddVertex("e");
            var f = graph.AddVertex("f");
            var g = graph.AddVertex("g");

            graph.AddUndirectedEdge(a, b, 5);
            graph.AddUndirectedEdge(b, c, 5);
            graph.AddUndirectedEdge(c, d, 5);
            graph.AddUndirectedEdge(d, e, 5);
            graph.AddUndirectedEdge(e, f, 5);
            graph.AddUndirectedEdge(f, g, 5);
            graph.AddUndirectedEdge(g, a, 5);

            graph.AddDirectedEdge(a, c, 1);


            graph.Print();

            //graph.GetNeighborsPointingTo(a);
            //graph.GetNeighborsPointingFrom(a);
            //both run by:
            graph.GetNeighborsDirected(a);

            MyGraph <string> graph1 = new MyGraph <string>();

            var j = graph1.AddVertex("A");
            var k = graph1.AddVertex("B");
            var l = graph1.AddVertex("C");
            var m = graph1.AddVertex("D");
            var n = graph1.AddVertex("E");
            var o = graph1.AddVertex("F");

            graph1.AddUndirectedEdge(j, k, 5);
            graph1.AddUndirectedEdge(k, l, 5);
            graph1.AddUndirectedEdge(k, m, 5);
            graph1.AddUndirectedEdge(l, n, 5);
            graph1.AddUndirectedEdge(l, o, 5);
            graph1.AddUndirectedEdge(m, o, 5);

            graph1.BreadthFirst(j);

            MyGraph <string> graph2 = new MyGraph <string>();

            var aa = graph2.AddVertex("aa");
            var bb = graph2.AddVertex("bb");
            var cc = graph2.AddVertex("cc");
            var dd = graph2.AddVertex("dd");
            var ee = graph2.AddVertex("ee");

            graph2.AddUndirectedEdge(aa, bb, 5);
            graph2.AddUndirectedEdge(aa, cc, 5);
            graph2.AddUndirectedEdge(aa, dd, 5);

            graph2.AddUndirectedEdge(bb, cc, 5);
            graph2.AddUndirectedEdge(cc, dd, 5);
            graph2.AddUndirectedEdge(dd, bb, 5);

            Console.WriteLine(graph2.ClusteringCoefficientUndirected(aa));
        }