1use ascii_dag::graph::DAG;
2
3fn main() {
4 println!("=== Cycle Detection Examples ===\n");
5
6 println!("1. Simple Cycle (A → B → C → A):");
8 let mut dag = DAG::new();
9 dag.add_node(1, "A");
10 dag.add_node(2, "B");
11 dag.add_node(3, "C");
12 dag.add_edge(1, 2); dag.add_edge(2, 3); dag.add_edge(3, 1); println!("{}\n", dag.render());
17
18 println!("2. Self-Reference (A → A):");
20 let mut dag = DAG::new();
21 dag.add_node(1, "SelfRef");
22 dag.add_edge(1, 1); println!("{}\n", dag.render());
25
26 println!("3. Longer Cycle (E1 → E2 → E3 → E4 → E2):");
28 let mut dag = DAG::new();
29 dag.add_node(1, "Error1");
30 dag.add_node(2, "Error2");
31 dag.add_node(3, "Error3");
32 dag.add_node(4, "Error4");
33 dag.add_edge(1, 2); dag.add_edge(2, 3); dag.add_edge(3, 4); dag.add_edge(4, 2); println!("{}\n", dag.render());
39
40 println!("4. Valid DAG - No Cycle:");
42 let dag = DAG::from_edges(
43 &[(1, "Valid1"), (2, "Valid2"), (3, "Valid3")],
44 &[(1, 2), (2, 3)],
45 );
46
47 println!("{}", dag.render());
48}