static void Main(string[] args) { List <string> scc = new List <string>(); List <CsNode <string, string> > nodes = new List <CsNode <string, string> >(); Console.Write("\n Testing Graph class"); Console.WriteLine("\n ======================="); TestGraph t = new TestGraph(); CsNode <string, string> node1 = new CsNode <string, string>("node1"); CsNode <string, string> node2 = new CsNode <string, string>("node2"); CsNode <string, string> node3 = new CsNode <string, string>("node3"); CsNode <string, string> node4 = new CsNode <string, string>("node4"); CsNode <string, string> node5 = new CsNode <string, string>("node5"); node1.addChild(node2, "edge12"); node2.addChild(node1, "edge21"); node2.addChild(node3, "edge23"); node2.addChild(node4, "edge24"); node3.addChild(node1, "edge31"); node5.addChild(node1, "edge51"); node5.addChild(node4, "edge54"); CsGraph <string, string> graph = new CsGraph <string, string>("Fred"); graph.addNode(node1); graph.addNode(node2); graph.addNode(node3); graph.addNode(node4); graph.addNode(node5); nodes.Add(node1); nodes.Add(node2); nodes.Add(node3); nodes.Add(node4); nodes.Add(node5); scc = t.tarjan(nodes); Console.WriteLine("Graph with parent and nodes"); foreach (var node in nodes) { Console.Write("\n {0}", node.name); for (int i = 0; i < node.children.Count; ++i) { Console.Write("\n {0}", node.children[i].targetNode.name); } } Console.WriteLine("SCCs:\n"); foreach (var s in scc) { Console.Write(s); } Console.Read(); }
static void Main(string[] args) { Console.Write("\n Testing CsGraph class"); Console.Write("\n ======================="); CsNode <string, string> node1 = new CsNode <string, string>("node1"); CsNode <string, string> node2 = new CsNode <string, string>("node2"); CsNode <string, string> node3 = new CsNode <string, string>("node3"); CsNode <string, string> node4 = new CsNode <string, string>("node4"); CsNode <string, string> node5 = new CsNode <string, string>("node5"); var nodes = new List <CsNode <string, string> >(); //var nodes = new List<Graph<string,string>>(); for (int i = 0; i < 5; i++) { // Here you can give each person a custom name based on a number nodes.Add(new CsNode <string, string>("node" + i)); } node1.addChild(node2, "edge12"); node1.addChild(node3, "edge13"); node2.addChild(node3, "edge23"); node2.addChild(node4, "edge24"); node3.addChild(node1, "edge31"); node5.addChild(node1, "edge51"); node5.addChild(node4, "edge54"); Graph <string, string> graph = new Graph <string, string>("Fred"); graph.addNode(node1); graph.addNode(node2); graph.addNode(node3); graph.addNode(node4); graph.addNode(node5); graph.startNode = node1; Console.Write("\n\n starting walk at {0}", graph.startNode.name); Console.Write("\n not showing backtracks"); graph.walk(); graph.startNode = node2; Console.Write("\n\n starting walk at {0}", graph.startNode.name); graph.showBackTrack = true; Console.Write("\n show backtracks"); graph.setOperation(new demoOperation()); graph.walk(); Console.Write("\n\n"); Console.ReadLine(); }