// LARGURA public void largura(int v) { visitado = new bool[getN()]; Fila fila = new Fila(getN()); fila.enfileirar(v); visitado[v] = true; while (!fila.vazia()) { int d = fila.desenfileirar(); for (int i = 0; i < getN(); i++) { for (int j = 0; j < getN(); j++) { Aresta a = getAresta(i, j); if (getN() != 0 && !visitado[i]) { visitado[i] = true; fila.enfileirar(i); getVertice(i).setCor(Color.Yellow); } if (a != null) { a.setCor(Color.Red); } } } } }
public void largura(int v) { Fila f = new Fila(matAdj.GetLength(0)); f.enfileirar(v); visitado[v] = true; // marca V como visitado while (!f.vazia()) { v = f.desenfileirar(); // retira o próximo vértice da fila for (int i = 0; i < matAdj.GetLength(0); i++) { // se I é adjacente a V e I ainda não foi visitado if (matAdj[v, i] != matAdj[0, 0] && !visitado[i]) { getAresta(v, i).setCor(Color.Orange); visitado[i] = true; // marca i como visitado f.enfileirar(i); // enfileira i } } } }
public void largura(int v) { // vetor VISITADO[] deve ser inicializado com FALSE Fila f = new Fila(getN()); f.enfileirar(v); visitado[v] = true; // marca V como visitado while (!f.vazia()) { v = f.desenfileirar(); // retira o próximo vértice da fila for (int i = 0; i < getN(); i++) { // se I é adjacente a V e I ainda não foi visitado if (getAresta(v, i) != null && !visitado[i]) { visitado[i] = true; // marca i como visitado getAresta(v, i).setCor(Color.Red); getVertice(i).setCor(Color.Black); Thread.Sleep(1000); f.enfileirar(i); // enfileira i } } } }
//Minha própria implementação do número cromático! public int numeroCromatico(int v) { Color[] vet = new Color[8]; // Vetor guardando as cores! vet[0] = Color.GreenYellow; vet[1] = Color.Blue; vet[2] = Color.Red; vet[3] = Color.Yellow; vet[4] = Color.Purple; vet[5] = Color.Pink; vet[6] = Color.Gray; vet[7] = Color.Black; List <Color> CoresPassadas = new List <Color>(); // Lista de cores List <Color> TotalCores = new List <Color>(); // Total de cores Fila f = new Fila(getN()); f.enfileirar(v); visitado[v] = true; // marca V como visitado int j = 0; while (!f.vazia()) { v = f.desenfileirar(); // retira o próximo vértice da fila if (j == 0) { // Colorindo o primeiro vértice. getVertice(v).setCor(vet[0]); TotalCores.Add(vet[0]); } for (int i = 0; i < getN(); i++) { // se I é adjacente a V e I ainda não foi visitado if (getAresta(v, i) != null && !visitado[i]) { visitado[i] = true; // marca i como visitado getAresta(v, i).setCor(Color.Red); // Marcando a linha visitada //Validação de vizinhos para cor! for (int u = 0; u < getN(); u++) { if (getAresta(i, u) != null && getVertice(u).getCor() != Color.Chocolate) // cor chocolate, não foi visitado ainda. { CoresPassadas.Add(getVertice(u).getCor()); } } int marcador = 0; for (int color = 0; color < vet.Length; color++) { if (!CoresPassadas.Contains(vet[color]) && marcador == 0) { getVertice(i).setCor(vet[color]); if (!TotalCores.Contains(vet[color])) // Alimentando lista adicional para calculado o xgh { TotalCores.Add(vet[color]); } marcador++; } } CoresPassadas.Clear(); // Limpando lista Thread.Sleep(1000); f.enfileirar(i); // enfileira i } } j++; } return(TotalCores.Count); }