è un homework per l'università,quindi non posto il testo ufficiale e non ho chiesto la soluzione di tutto l'esercizio per non essere scorretto(se tutti chiedessimo aiuto nei forum,non avrebbe senso l'assegnazione degli esercizi,dato che hanno anche un peso nella valutazione finale dell'esame)... 
comunque spiego in breve qual è l'obiettivo :
ho un labirinto tridimensionale e devo trovare e stampare in outptut il tempo minimo che impiego per uscirne.
il labirinto è composto in questo modo : ho un input di righe la prima delle quali è rappresentata da tre interi L,R e C che si riferiscono rispettivamente al numero di livelli del labirinto,al numero di righe e al numero di colonne.
Seguono quindi L blocchi da R righe ciascuno; ciascuna di queste righe contiene C caratteri. Ogni carattere descrive una cella del labirinto. Una cella piena di roccia è indicata dal carattere ’#’, mentre le celle percorribili sono rappresentate dal carattere ’.’
La vostra posizione di partenza è indicata dalla lettera maiuscola ’S’ e l’uscita è indicata dalla lettera maiuscola ’E’.
Ogni livello è infine seguito da una riga vuota.
ci si può spostare soltanto da un blocco all'altro che contiene il carattere '.' a patto che siano adiacenti,quindi a destra,sinistra,sopra,sotto,in alto sul livello successivo o in basso sul livello precedente.
esempio di input :
3 4 5
S....
.###.
.##..
###.#
#####
#####
##.##
##...
#####
#####
#.###
#### E
ogni spostamento impiega untempo t=1,quindi in questo esempio la soluzione da stampare è 11.
ho pensato di implementarlo con i grafi ed usare l'algoritmo pathDFS per trovare i percorsi.
queste le prime righe che ho buttato giù :
codice:
static class Graph{
static List<Vertex> lv;
static List<Edge> le;
public Graph(){
lv=new ArrayList<Vertex>();
le=new ArrayList<Edge>();
}
public void insertVertex(Vertex v){
lv.add(v);
}
public void insertEdge(Vertex v,Vertex w){
le.add(new Edge(v,w));
}
public List<Edge> incidentEdges(Vertex v){
List<Edge> res=new ArrayList<Edge>();
Iterator<Edge> it=le.iterator();
while(it.hasNext()){
Edge ep=it.next();
if(ep.orig.equals(v) || ep.dest.equals(v))
res.add(ep);
return res;
}
}
static class Vertex{
String elem;
String label;
public Vertex(String e){
this.elem=e;
}
public void setLabel(String l){
this.label=l;
}
}
static class Edge{
String label;
Vertex orig;
Vertex dest;
public Edge(Vertex o,Vertex d){
this.orig=o;
this.dest=d;
}
public void setLabel(String l){
this.label=l;
}
}
le modalità con cui voglio acquisire e creare il grafo le ho illustrate nel primo post insieme al relativo problema su cui ho un dubbio e per il quale vi chiedo aiuto.non voglio una soluzione per l'esercizio intero,perchè come ho già detto non sarebbe corretto e perchè a quel punto non sarebbe costruttivo..grazie