/** 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();
  }
  private int distancia_aux(
      Map<String, Ligacao> ligacoes,
      DijElem elemAct,
      HashMap<String, DijElem> elementos,
      int greycount) {
    Collection<Ligacao> coll = ligacoes.values();
    int grey = greycount;

    for (Ligacao lig : coll) {
      DijElem target = elementos.get(lig.get_Localidaded());

      if (target != null
          && (target.get_Vis() != _VIS_BLACK)
          && (target.get_Nrlocalidades() > (elemAct.get_Nrlocalidades() + 1))) {
        target.set_Nrlocalidades(elemAct.get_Nrlocalidades() + 1);
        target.set_Pai(elemAct.get_Nome());
      } else if (target == null) {
        target =
            new DijElem(
                lig.get_Localidaded(),
                elemAct.get_Nrlocalidades() + 1,
                elemAct.get_Nome(),
                _VIS_GREY);

        grey++;

        elementos.put(lig.get_Localidaded(), target.clone());
      }
    }

    return grey;
  }
 /** Metodo que adiciona uma ligação */
 public boolean addLigacao(Ligacao ligacao, String partida) {
   if (this.localidades.containsKey(partida)) {
     Localidade aux = this.localidades.get(partida);
     return aux.addLigacao(ligacao.clone());
   }
   return false;
 }