package buffalo.transportNetwork;
import java.util.Vector;
/**
Interface pour les flots, plus précisément pour les sommets.<BR>
Les sommets qui vont nous permettre d'exécuter les
algorithmes de flots doivent juste nous permettre de parcourir le
chaînage et accepter une marque.
*/
public interface FlowableVertex
{
/**
Retourne le sommet source du réseau de transport.
*/
public FlowableVertex getSource();
/**
Retourne le sommet puit du réseau de transport.
*/
public FlowableVertex getSink();
/**
Renvoie, consignées dans un <CODE>Vector</CODE>,
toutes les arêtes entrants dans le sommet courant.
Attention : il faut que tous les éléments
contenus dans ce <CODE>Vector</CODE> soient de type
<CODE>FlowableArc</CODE>, sinon ça sera à
vous de rattraper la <CODE>ClassCastException</CODE> !
*/
public Vector getInArcs();
/**
Renvoie, consignées dans un <CODE>Vector</CODE>,
toutes les arêtes sortant du sommet courant.
Attention : il faut que tous les
éléments contenus dans ce <CODE>Vector</CODE>
soient de type <CODE>FlowableArc</CODE>,
sinon ça sera à vous de
rattraper la <CODE>ClassCastException</CODE> !
*/
public Vector getOutArcs();
/**
Pour placer une marque dans le sommet courant.
*/
public void acceptMark(FlowMark myMark);
/**
Pour consulter la marque du sommet courant.
*/
public FlowMark getMark();
/**
Ajoute ce sommet dans la coupe.
*/
public void addToTheCut();
/**
Retourne <CODE>true</CODE> si ce sommet est dans la coupe.
*/
public boolean isInTheCut();
}