public void ler(String nome_arquivo) {
        try {
            //Leitura do io
            String io = nome_arquivo; 
            File file = new File(io);
            FileInputStream in = new FileInputStream(file);
            FileInputStream in2 = new FileInputStream(file);
            Scanner scanner = new Scanner(in);
            Scanner scanner2 = new Scanner(in2);

            int nVertices = 0;
            int num_arestas = 0;
            ArrayList arestas = new ArrayList();
            ArrayList counter = new ArrayList();
            ArrayList< Vertex> vertices = new ArrayList< Vertex>();

            while (scanner2.hasNext()) {
                String palavra = scanner2.next();
                counter.add(palavra);
            }
            nVertices = Integer.parseInt(counter.get(0).toString());
            counter.remove(0);
            for (int i = 0; i < nVertices; i++) {
                int indice = i + 1;
                Vertex vertice = new Vertex(indice);
                vertice.marcado = false;
                vertices.add(vertice);
            }

            while (scanner.hasNextLine()) {
                scanner.nextLine();
                num_arestas++;
            }
            num_arestas -= 1;


            Edge aresta;
            int vertice_elemento_1;
            int vertice_elemento_2;

            int i;
            int j;
            int k;
            int delim = counter.size();
            if (counter.size() == 3 * num_arestas) {

                for (i = 0, j = 1, k = 2; i < delim; i = i + 3, j = j + 3, k = k + 3) {
                    String elemento1 = counter.get(i).toString();
                    String elemento2 = counter.get(j).toString();
                    String weight = counter.get(k).toString();
                    aresta = new Edge(elemento1, elemento2, weight);
                    arestas.add(aresta);
                    
////////////////////////////////////////////////////////////////////////////// 
                    
                   
                    
                    vertice_elemento_1 = Integer.parseInt(elemento1);
                    vertice_elemento_2 = Integer.parseInt(elemento2);
                    
                     
                    
                    Vertex vertice1 = (Vertex) vertices.get(vertice_elemento_1 - 1);
                    Vertex vertice2 = (Vertex) vertices.get(vertice_elemento_2 - 1);
                    Float peso = new Float(weight);
                    
                    vertice1.AdicionaVizinho(vertice1,vertice2,peso);
                    vertice2.AdicionaVizinho(vertice2,vertice1,peso);
                    
            
                    
                    
                    
                }
            }
            if (counter.size() == 2 * num_arestas) {

                for (i = 0, j = 1; i < delim; i = i + 2, j = j + 2) {
                    String elemento1 = counter.get(i).toString();
                    String elemento2 = counter.get(j).toString();

                    aresta = new Edge(elemento1, elemento2);
                    arestas.add(aresta);
                    
                    vertice_elemento_1 = Integer.parseInt(elemento1);
                    vertice_elemento_2 = Integer.parseInt(elemento2);
                    Vertex vertice1 = (Vertex) vertices.get(vertice_elemento_1 - 1);
                    Vertex vertice2 = (Vertex) vertices.get(vertice_elemento_2 - 1);
                    
                    vertice1.AdicionaVizinho(vertice1,vertice2);
                    vertice2.AdicionaVizinho(vertice2,vertice1);
            
                  
                }
            }

            grafo = new Graph(nVertices, arestas, vertices);

            in.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }