/* Generate search parameters */ void gen_search(graph_t *G) { init_bfs(G); int validateNLevelsLength; vertex_id_t validateNLevels[MAX_NLEVELS]; uint8_t *marked = (uint8_t*)calloc(G->n, sizeof(uint8_t)); G->roots = (vertex_id_t *)malloc(G->nRoots * sizeof(vertex_id_t)); G->numTraversedEdges = (edge_id_t *)malloc(G->nRoots * sizeof(uint64_t)); for (int i = 0; i < G->nRoots; ++i) { edge_id_t bfs_nedges; G->roots[i] = G->n * drand48(); bfs(marked, validateNLevels, &validateNLevelsLength, G->roots[i], G, &bfs_nedges); G->numTraversedEdges[i] = bfs_nedges; for (int j = 0; j < G->n; j++) marked[j] = 0; } finalize_bfs(); }
void path_finding(t_data *d) { t_allpaths allpaths; t_bfs bfs; allpaths.paths = VECT_INI(t_onepath); allpaths.idmin = 0; allpaths.sizemin = d->nbroom; init_bfs(&bfs, d); allpaths.maxflow = max_flow(R_OUT(d->idstart), R_IN(d->idend), &bfs, &allpaths); free_bfs(&bfs); if (allpaths.maxflow == 0) { ft_putendl_fd("ERROR: lem-in: No path from start to end", 2); return ; } ft_printf("\n---- PRINT PATH FETCHED ----\n"); ft_vect_print(&allpaths.paths, print_path); ft_printf("ffaflow: %d\n", allpaths.maxflow); ants_invasion(&allpaths, d); }