Esempio n. 1
0
  ///////////////////////////////////////////////////////// Crear grafo a partir de un archivo
  // ///////////////////////////////////////////////
  public Grafo Grafo(String n) {

    Grafo g = null;

    File file = new File(n);

    try {

      String line;

      FileReader filer = new FileReader(file);
      BufferedReader buf = new BufferedReader(filer);
      String linea = buf.readLine().trim();

      boolean seguir = true;

      if (linea != null) {

        if (!linea.equals("d") && !linea.equals("n")) {
          System.out.println("El archivo está mal escrito");

        } else {
          StringTokenizer token = new StringTokenizer(linea);
          String Dir = token.nextToken();

          linea = buf.readLine().trim();
          token = new StringTokenizer(linea);
          int nV = Integer.parseInt(token.nextToken());
          token = new StringTokenizer(linea);
          linea = buf.readLine().trim();
          token = new StringTokenizer(linea);
          int nL = Integer.parseInt(token.nextToken());
          boolean dirigido = false;

          if (Dir.equals("d")) {
            System.out.println("Dirigido");
            g = new GrafoDirigido();
            dirigido = true;
          } else if (Dir.equals("n")) {
            System.out.println("NoDirigido");
            g = new GrafoNoDirigido();
            dirigido = false;
          }

          int i = 0;
          while (i < nV && (linea = buf.readLine().trim()) != null) {

            token = new StringTokenizer(linea);
            String idVer = token.nextToken();
            double peso = Double.parseDouble(token.nextToken());
            Vertice ver = new Vertice(peso, idVer);
            g.agregarVertice(g, ver);
            i++;
          }

          i = 0;
          while (i < nL && (linea = buf.readLine().trim()) != null) {

            token = new StringTokenizer(linea);
            String idL = token.nextToken();
            String idv1 = token.nextToken();
            String idv2 = token.nextToken();
            double peso2 = Double.parseDouble(token.nextToken());

            if (dirigido == true) {
              Arco ac = new Arco(peso2, idL, idv1, idv2);
              ((GrafoDirigido) g).agregarArco(((GrafoDirigido) g), ac);
            } else {
              Arista at = new Arista(peso2, idL, idv1, idv2);
              ((GrafoNoDirigido) g).agregarArista(((GrafoNoDirigido) g), at);
            }
            ;
            i++;
          }
          ;
          System.out.println("El grafo se creo exitosamente!!");
          g.vertices(g);
          g.lados(g);
        }
      }
      buf.close();

    } catch (FileNotFoundException e) {
      System.out.println("El archivo no existe");
      g = new GrafoDirigido();
    } catch (IOException e) {
      System.out.println("Excepcion, intente de nuevo");
    }

    return g;
  }