/** Metodo que escreve os clientes num ficheiro */
  public void escreveLocalidades(String fileLocalidades, String fileLigacoes, int nrlocalidades)
      throws FileNotFoundException, IOException {
    PrintWriter printloc = new PrintWriter(fileLocalidades);
    PrintWriter printlig = new PrintWriter(fileLigacoes);

    Collection<Localidade> coll = this.localidades.values();

    for (Localidade l : coll) {
      printloc.print(l.get_Codigopostal() + "|" + l.get_Nome());

      Map<String, Ligacao> ligacoes = l.get_Ligacoes();
      int nrligacoes = ligacoes.size();

      Collection<Ligacao> colllig = ligacoes.values();

      for (Ligacao lig : colllig) {
        printloc.print("|1");
        printlig.println(
            l.get_Codigopostal()
                + "|"
                + lig.get_Localidaded()
                + "|"
                + lig.get_Distancia()
                + "|"
                + lig.get_Taxas());
      }
      printloc.print("\n");

      nrlocalidades--;
      if (nrlocalidades == 0) break;
    }

    printloc.close();
    printlig.close();
  }
  /** Metodo que calcula o nr localidades entre 2 localidades */
  public int distancia(String partida, String destino, Vector<String> caminho) {
    HashMap<String, DijElem> elementos =
        new HashMap<String, DijElem>((int) (this.localidades.size() * 1.4));

    DijElem elemAct;
    Localidade localAct;

    elemAct = new DijElem(partida, 0, "", _VIS_GREY);

    elementos.put(elemAct.get_Nome(), elemAct.clone());

    int greycount = 1;
    while (greycount > 0) {
      elemAct = null;
      elemAct = verificaproxnodo(elementos);

      if (elemAct == null) return -1;

      localAct = this.localidades.get(elemAct.get_Nome());

      if (localAct == null) return -1;

      greycount = distancia_aux(localAct.get_Ligacoes(), elemAct, elementos, greycount);

      elemAct.set_Vis(_VIS_BLACK);

      if (elemAct.get_Nome().equals(destino)) {
        caminho.add(destino);

        DijElem pcaminho = elemAct;
        while (!pcaminho.get_Pai().equals("")) {
          caminho.add(pcaminho.get_Pai());
          pcaminho = elementos.get(pcaminho.get_Pai());
        }

        return elemAct.get_Nrlocalidades();
      }

      greycount--;
    }
    return -1;
  }