Allora, provo con questa domanda. Ho un digrafo (la sua implementazione è in 1 altra discussione che ho aperto a cui nessuno ha risposto, si chiama Algoritmo digrafo o qualcosa di simile).

Devo fare questo:

Dato il grafo,un nodo sorgente ed un int x, resituire la Set<Integer> di nodi raggiungibili dal
nodo sorgente attraversando al massimo x archi. Consigli?

Il mio primo approccio (che non funziona granché) è questo:

codice:
public Set<Integer> maxHops(Graph g, int source, int max)
{
	List<Edge5R> e_visited = new ArrayList<Edge5R>();
	List<Integer> v_visited = new ArrayList<Edge5R>();
	Set<Integer> ris = new HashSet<Integer>();
	dfs(g,source,max,e_visited,v_visited,ris,0);
	return ris;
}

public void dfs(Graph g, int source, int max, List<Edge5R> e_visited, 
		List<Integer> v_visited, Set<Integer> ris, int cont)
{
	v_visited.add(source);
	if(cont <= max)
	{
		if(!ris.contains(source))
		{
			ris.add(source);
		}
	}
	for(Edge5R edge : Graph.outEdges(source))
	{
		if(!e_visited.contains(edge))
		{
			Integer w = edge.getDestination();
			
			if(!v_visited.contains(w))
			{
				e_visited.add(edge);
				dfs(g,w,max,e_visited,v_visited,ris,cont++);
			}
		}
	}
}