Example #1
0
        private static void DemoUndirected()
        {
            UndirectedIndexedIncidenceGraph.Builder builder = new(10);

            using (TextReader textReader = IndexedGraphs.GetTextReader("05"))
            {
                IEnumerable <Endpoints> edges = IndexedEdgeListParser.ParseEdges(textReader);
                foreach (Endpoints edge in edges)
                {
                    builder.Add(edge.Tail, edge.Head);
                }
            }

            UndirectedIndexedIncidenceGraph graph = builder.ToGraph();

            Console.Write($"{nameof(graph.VertexCount)}: {graph.VertexCount}");
            Console.WriteLine($", {nameof(graph.EdgeCount)}: {graph.EdgeCount}");

            if (graph.VertexCount <= 0)
            {
                return;
            }

            PrintIncidentEdges(graph, 0);

            if (graph.VertexCount == 1)
            {
                return;
            }

            PrintIncidentEdges(graph, graph.VertexCount - 1);
Example #2
0
 static void PrintIncidentEdges(UndirectedIndexedIncidenceGraph graph, int vertex)
 {
     ArraySegment <int> .Enumerator edges = graph.EnumerateOutEdges(vertex);
     while (edges.MoveNext())
     {
         int    edge            = edges.Current;
         string tailString      = graph.TryGetTail(edge, out int tail) ? IndexToString(tail) : "?";
         string headString      = graph.TryGetHead(edge, out int head) ? IndexToString(head) : "?";
         string endpointsString = $"{tailString} -> {headString}";
         Console.WriteLine($"{edge.ToString(CultureInfo.InvariantCulture)}: {endpointsString}");
     }
 }