示例#1
0
/* 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();
}
示例#2
0
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);
}