package estrutura;
import java.util.ArrayList;
import leitura.Leitura;
public class Grafo {
//Atributo da classe Grafo
private ArrayList<No> nos = null; //Lista de n�s do grafo.
private Leitura l = null;
//Contrutor padr�o da classe Grafo
public Grafo(){
nos = new ArrayList<No>();
l = new Leitura();
l.reading();
}
//Sets e gets dos atributos da classe Grafo.
public ArrayList<No> getNos() {
return nos;
}
public void setNos(ArrayList<No> nos) {
this.nos = nos;
}
/**
* Fun��o que retorna um n� do grafo com base no seu valor de descri��o.
*
* @param valor
* @return No
*/
public No buscaNo(int valor){
for(int i = 0; i < this.nos.size(); i++){
if(nos.get(i).getValor() == valor){
return nos.get(i);
}
}
return null;
}
/*
* Fun��o que cria e adiciona os n�s do grafo.
*/
public void criarNos(){
ArrayList<Integer> nosArquivo = this.l.no(); //Retorno dos n�s definidos no arquivo.
//Instancia o n� e adiciona no grafo.
for(int i = 0; i < nosArquivo.size(); i++){
No novo = new No();
novo.setValor(nosArquivo.get(i));
this.nos.add(novo);
}
}
/*
* Fun��o que cria as aresta do grafo.
*/
public void criaArestas(){
ArrayList<Integer> arestasArquivo = this.l.aresta(); //Retorno das arestas definidas no arquivo.
ArrayList<Integer> pesosArquivo = this.l.custo(); //Retorno dos pesos definidos no arquivo.
No aux1 = null;
No aux2 = null;
//Adiciona aos n�s os valores de seus respectivos vizinho.
for(int i = 0; i < arestasArquivo.size(); i = i+2){
Aresta nova1 = new Aresta();
Aresta nova2 = new Aresta();
nova1.setValor(arestasArquivo.get(i+1));
nova1.setPeso(pesosArquivo.get(i/2));
nova2.setPeso(arestasArquivo.get(i/2));
nova2.setValor(arestasArquivo.get(i));
aux1 = this.buscaNo(arestasArquivo.get(i));
aux1.getVizinhos().add(nova1);
aux2 = this.buscaNo(arestasArquivo.get(i+1));
nova2.setPeso(pesosArquivo.get(i/2));
aux2.getVizinhos().add(nova2);
}
}
}