public MySet<Aresta> primVetorOrdenado(Grafo g) {

    Vertice u = g.getVertices().getElements().get(0);

    // essa parte deve ser feito com uma heap
    OrderedVector arestas = new OrderedVector(u.getArestas());

    MySet<Vertice> T = new MySet<Vertice>();
    MySet<Aresta> S = new MySet<Aresta>();
    T.addElement(u);

    while (T.getElements().size() < g.getVertices().getElements().size()) {

      Aresta uv = arestas.deleteFirst();
      S.addElement(uv);
      Vertice v = uv.getV2();
      T.addElement(v);
      int index = 0;
      for (Vertice w : v.getVizinhos()) {
        Aresta vw = v.getArestas().get(index);
        if (T.getElements().contains(w)) {
          arestas.remove(vw);
        } else {
          arestas.addElement(vw);
        }
        index++;
      }
    }

    return S;
  }