/**
 *  Classe Digrafo.java
 *  Autor: Pedro Luis Furio Raphael
 *  Data 01/02/10
 */

package digrafos;

import java.util.ArrayList;
import java.util.List;

public class Digrafo {

  public List<Vertice> vertices;

  public Digrafo() {
    vertices = new ArrayList<Vertice>();
  }

  public Digrafo(Digrafo T) {
    vertices = T.vertices;
  }

  public void init(int n) {
    for (int i = 0; i < n; i++) {
      vertices.add(new Vertice(i));
    }
  }

  public void associaArco(Arco a) {
    Vertice v = a.inicio;
    Vertice w = a.fim;
    w.pai = v;
    w.paiFilho = a;
  }

  /**
   * Este método recebe dois vértices (v,w) e devolve um caminho de v a w.
   */
  public List<Arco> achaCaminho(Vertice v, Vertice w) {
    List<Arco> c = new ArrayList<Arco>(this.vertices.size());
    Arco a;
    while (w != v) {
      a = w.paiFilho;
      c.add(a);
      w = w.pai;
      if (w == null)
        return null;
    }
    return c;
  }
}
