public static Graph VerticesDeCorte(Graph grafo) {
		DepthFirstSearch dfs = new DepthFirstSearch(grafo);
		
		dfs.setDoComponentes(true); //Habilita a geração de componentes
		dfs.run();
		
		grafo.printGraph();
		
		//Componentes conexas existentes no grafo original
		int numComponentes = dfs.getComponentes().size();
		int[] vetorH = new int[grafo.getNlc()];

		for (int i = 0; i < grafo.getNlc(); i++) {
			//Retira um vértice
			for (int j = 0; j < grafo.getNlc(); j++) {
				vetorH[j] = grafo.getElement(i, j);
				grafo.setElement(i, j, 0);
			}
			DepthFirstSearch dfsTmp = new DepthFirstSearch(grafo);
			
			dfsTmp.setDoComponentes(true); //Habilita a geração de lista de componentes conexas
			dfsTmp.run();

			for (int j = 0; j < grafo.getNlc(); j++) {
				grafo.setElement(i, j, vetorH[j]);
				vetorH[j] = 0;
			}
			
			//Verifica se o número de componentes aumentou
			if (dfsTmp.getComponentes().size() > numComponentes) {
				for (int j = 0; j < grafo.getNlc(); j++) {
					if (grafo.getElement(i, j) > 0) { // Marca arestas do vértice de corte
						grafo.setElement(i, j, 2);
						grafo.setElement(j, i, 2);
					}
				}
			}
		}
		System.out.println(" ");
		grafo.printGraph();
		return grafo;
	}