Gen 0: 66.67/100 (baseline - crashes on large case) Gen 1: 70/100 (CSR flat arrays fix crash, case 3: 29/60 = 0.1 ratio) Gen 2: 70/100 (separate adjSorted, case 3: 31/60) Gen 3: 36.67/100 (DFS static array bug - invalid paths) Gen 4: 6.67/100 (double free in DFS) Gen 5: 73.33/100 (fix double free, DFS works, case 3: 46/60 = 0.2) Gen 6: 73.33/100 (same, case 3: 46/60) Gen 7: 70/100 (randomized DFS hurt, case 3: 42/60 = 0.1) Gen 8: 73.33/100 (adj matrix for small, case 3: 49/60 = 0.2) Gen 9: 73.33/100 (optimized DFS, case 3: 50/60 = 0.2) Gen 10: 0/100 (heap corruption from buggy CSR approach) Gen 11: 70/100 (vector adj, slower, case 3: 42/60) Gen 12: 76.67/100 (CSR + 2-vertex insertion, case 3: 55/60 = 0.3) Gen 13: 76.67/100 (swap op hurt, case 3: 52/60) Gen 14: 76.67/100 (3-vertex chain, case 3: 55/60) Gen 15: 76.67/100 (reroute, case 3: 52/60) Gen 16: 76.67/100 (random greedy + improve, case 3: 55/60) Gen 17: 76.67/100 (vertex swap, case 3: 52/60) Gen 18: 80/100 (randomized DFS restarts + vertex swap, case 3: 57/60 = 0.4) Gen 19: 100/100 (early improvement + time redistribution, case 3: 60/60) **PERFECT**