Grafos

To fazendo um trabalho de grafos e to precisando de ajuda

Queria saber como criar uma matriz de adjacencia
Eu sei como ela funciona
Mas eu tenho que criar um metodo?
Fazer um construtor?

[code]
public class Aresta {
private Vertice v1;
private Vertice v2;

public Aresta(Vertice v1, Vertice v2) {
	super();
	this.v1 = v1;
	this.v2 = v2;
}
public Aresta() {
	super();
	
}
public Vertice getV1() {
	return v1;
}
public void setV1(Vertice v1) {
	this.v1 = v1;
}
public Vertice getV2() {
	return v2;
}
public void setV2(Vertice v2) {
	this.v2 = v2;
}

}

[/code][code]import java.util.ArrayList;

public class Grafo {

private ArrayList arestas;
private ArrayList vertices;
private int [][]matrizAdjacencia;

public Grafo() {
	vertices = new ArrayList();
    arestas = new ArrayList();
}


public Vertice addVertice(char nome){
	Vertice v = new Vertice();
	vertices.add(v);
	return v;





}
public int getQtdVertices(){
	return(vertices.size());
}

}[/code][code]
public class Principal {

public static void main(String[] args) {

	Grafo grafo = new Grafo();
	grafo.addVertice('A');
	grafo.addVertice('B');
	grafo.addVertice('C');
	grafo.addVertice('D');
	grafo.addVertice('E');
	grafo.addVertice('F');
	
	



	System.out.println(grafo.getQtdVertices());

}

}
[/code][code]
public class Vertice {

char nome;

public Vertice(char nome) {
	super();
	this.nome = nome;
}

public Vertice() {
	super();
	
}


public char getNome() {
	return nome;
}

public void setNome(char nome) {
	this.nome = nome;
}

}[/code]

já consegui implementar a matriz

agora não to conseguindo adicionar as arestas

nçao sei se to fazendo o main errado
ou se o metodo é que tá errado
alguém pode dar uma olhada pra mim

[code]import java.util.ArrayList;

public class Grafo {

private ArrayList arestas;
private ArrayList vertices;
private int [][]matrizAdjacencia;
private int [][]matrizIncidencia;

public Grafo() {
	vertices = new ArrayList();
	arestas = new ArrayList();
}
public Grafo(int[][] matrizAdjacencias){
	vertices = new ArrayList();
	arestas = new ArrayList();

	for (int i=0;i<matrizAdjacencias.length;i++) {
		this.addVertice( );
	}
	for (int i=0;i<matrizAdjacencias.length;i++) {
		for (int j=0;j<matrizAdjacencias.length;j++) {
			if(matrizAdjacencias[i][j]==1){
				Vertice v1 = this.getVertice(i);
				Vertice v2 = this.getVertice(j);
				this.addAresta(v1,v2);
			}
		}
	}
}




public Vertice addVertice(){
	Vertice v = new Vertice();
	vertices.add(v);
	return v;
}
public  Aresta addAresta(Vertice _v1, Vertice _v2){
	if(this.getArestaEntreVertices(_v1,_v2)==null){
		Aresta aresta = new Aresta(_v1,_v2);
		arestas.add(aresta);

		this.updateMatrizAdjacencias();
		this.updateMatrizIncidencias();
		return(aresta);
	}
	return(null);
}
public Aresta getArestaEntreVertices(Vertice _v1, Vertice _v2){
	Aresta aresta;
	for(int i=0;i<arestas.size();i++){
		aresta = this.getAresta(i);
		if(aresta.contemAresta(_v1,_v2)) 
			return(aresta);
	}
	return(null);
}

private  void updateMatrizAdjacencias(){
	Vertice vertice;
	Vertice verticeAux;
	ArrayList v_adjacencias;
	matrizAdjacencia = new int[vertices.size()][vertices.size()];


	for(int i=0;i<vertices.size();i++){
		vertice = this.getVertice(i);
		v_adjacencias = this.getAdjacencias(vertice);
		for(int j=0;j<v_adjacencias.size();j++){
			verticeAux = (Vertice)v_adjacencias.get(j);
			matrizAdjacencia[i][verticeAux.nome-1] = 1;
		}
	}
}
private  void updateMatrizIncidencias(){
	Aresta aresta;
	matrizIncidencia = new int[vertices.size()][arestas.size()];

	for(int j=0;j<arestas.size();j++){
		aresta = this.getAresta(j);
		matrizIncidencia[aresta.getV1().nome-1][j] = 1;
		matrizIncidencia[aresta.getV2().nome-1][j] = 1;
	}
}

public  Aresta getAresta(int i){
	return((Aresta)arestas.get(i));
}


public  Vertice getVertice(int i){
	return((Vertice)vertices.get(i));
}


public ArrayList getAdjacencias(Vertice v){
	Aresta aresta;
	ArrayList adjacencias = new ArrayList();
	for(int i=0;i<arestas.size();i++){
		aresta = this.getAresta(i);
		if(aresta.getV1() == v){
			adjacencias.add(aresta.getV2());
		}
		if(aresta.getV2() == v){
			adjacencias.add(aresta.getV1());
		}
	}

	return(adjacencias);
}

public int getQtdVertices(){
	return(vertices.size());
}

}[/code]

Usuário duplicado?
http://www.guj.com.br/posts/list/122406.java
http://www.guj.com.br/posts/list/122482.java
Cara, não precisa fazer isso…