package graphtea.extensions.reports.spectralreports.maxflowmincut; import graphtea.graph.graph.Edge; import graphtea.graph.graph.GraphModel; import graphtea.graph.graph.Vertex; public abstract class MaxFlow { public double C[][]; public double F[][]; protected GraphModel g; protected int n; protected Vertex source,sink; int s, t; protected boolean showResult; public MaxFlow(GraphModel g, Vertex source, Vertex sink, boolean showResult) { this.g = g; this.source = source; this.sink = sink; this.showResult = showResult; } public int perform() { doAlgorithm(); if(showResult) makeLabels(); int res=0; for(int i=0; i<n ; i++) { res+= F[i][t]; } return res; } protected abstract void doAlgorithm(); protected void makeLabels() { for(Edge e : g.getEdges()) { e.setLabel(F[e.source.getId()][e.target.getId()] + "/" + C[e.source.getId()][e.target.getId()] ); e.setShowWeight(false); } g.setDrawEdgeLabels(true); } }