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;
}
}