package buffalo.transportNetwork; import java.util.Vector; /** Exemple d'implémentation de FlowableVertex, représente un sommet dans le réseau de transport. Le coût de cet implémentation est le passage de l'instance de TransportNetwork en paramètre dans le constructeur. */ public class Vertex implements FlowableVertex { /** Indice du sommet. */ private int index; /** Réseau de transport auquel ce sommet est associé. */ TransportNetwork myTransportNetwork; /** Ensemble des arêtes sortantes. */ private Vector outArcs; /** Ensemble des arêtes entrantes. */ private Vector inArcs; /** Marque. */ private FlowMark myMark; /** Vrai si le sommet marqué est dans la coupe. */ private boolean isInTheCut = false; /*----------------------------------------------------------------------------*/ /** Création d'un sommet... */ public Vertex(TransportNetwork myTransportNetwork, int indexOfVertex) { this.myTransportNetwork = myTransportNetwork; this.index = indexOfVertex; outArcs = new Vector(); inArcs = new Vector(); } /*----------------------------------------------------------------------------*/ /** Retourne l'<CODE>index</CODE> du sommet courant. */ public int getIndex() { return index; } /*----------------------------------------------------------------------------*/ /** Ajout d'une arête conforme. */ public void addOutArc(Arc myArc) { outArcs.add(myArc); } /*----------------------------------------------------------------------------*/ /** Ajout d'une arête inconforme. */ public void addInArc(Arc myArc) { inArcs.add(myArc); } /*----------------------------------------------------------------------------*/ /** Retourne le sommet source. */ public FlowableVertex getSource() { return myTransportNetwork.getSource(); } /*----------------------------------------------------------------------------*/ /** Retourne le sommet puits. */ public FlowableVertex getSink() { return myTransportNetwork.getSink(); } /*----------------------------------------------------------------------------*/ /** Retourne la liste des prédécesseurs. */ public Vector getInArcs() { return inArcs; } /*----------------------------------------------------------------------------*/ /** Retourne la liste des successeurs. */ public Vector getOutArcs() { return outArcs; } /*----------------------------------------------------------------------------*/ /** Accepte la marque myMark. */ public void acceptMark(FlowMark myMark) { this.myMark = myMark; } /*----------------------------------------------------------------------------*/ /** Retourne la marque si elle existe. */ public FlowMark getMark() { return this.myMark; } /*----------------------------------------------------------------------------------------*/ /** Ajoute ce sommet dans la coupe. */ public void addToTheCut() { isInTheCut = true; } /*----------------------------------------------------------------------------------------*/ /** Retourne <CODE>true</CODE> si ce sommet est dans la coupe. */ public boolean isInTheCut() { return isInTheCut; } /*----------------------------------------------------------------------------*/ /** Renvoie cette arête sous format chaîne de caractères */ public String toString() { String res = "{ index = " + index; res += " arcs = "+ outArcs; if (myMark!= null) { res += " mark = " + myMark; } else { res += null; } res += " };"; return res; } }