package com.interview.algorithms.graph;
import com.interview.basics.model.graph.Graph;
import com.interview.basics.model.graph.searcher.BFSearcher;
import com.interview.basics.model.graph.searcher.ProblemSolver;
public class C6_15_UnweightShortestPathSolver extends ProblemSolver {
private int source;
private int target;
private int step = 0;
private String path;
public C6_15_UnweightShortestPathSolver(Graph g) {
super(g);
searcher = new BFSearcher(g);
}
public void solve(int s, int t) {
this.source = s;
this.target = t;
searcher.search(s, this);
}
@Override
public void preProcess(int v) {
if(v == this.target){
searcher.setBreak(true);
int s = searcher.getPrevious(v);
StringBuilder builder = new StringBuilder();
builder.append(v);
while(s != -1){
step ++;
builder.append("-" + s);
s = searcher.getPrevious(s);
}
path = builder.toString();
}
}
public int getStep() {
return step;
}
public String getPath() {
return path;
}
public int getSource() {
return source;
}
public int getTarget() {
return target;
}
@Override
public void postProcess(int v) {
// TODO Auto-generated method stub
}
}