private void AdicionarNoGridView() //metodo que percorre a matriz dos caminhos e passa para o gridview { int tamanhoColunas = 0; int tamanhoLinhas = 0; if (idOrigem == 0) // caso o origem fosse 0, ele nao aumentaria nas colunas abaixo { tamanhoColunas++; } //calcula quantas colunas e linhas terão for (int i = 1; i < tamanhoArray; i++) { for (int j = 1; j < tamanhoArray; j++) { if (matrizCaminhosAchados[i, j] != 0) { if (tamanhoColunas < j) { tamanhoColunas++; } if (tamanhoLinhas < i) { tamanhoLinhas++; } } } } if (tamanhoLinhas == 0) //se não existe dados no gridview é porque rotas não foram encontradas { MessageBox.Show("Não existem caminhos entre esses destinos"); Resetar(); return; } List <CidadeMarte> listaCidades = arvoreCidades.ParaLista(); //escreve os dados no gridview dgvCaminhosEncontrados.RowCount = tamanhoLinhas; dgvCaminhosEncontrados.ColumnCount = tamanhoColunas; for (int lin = 0; lin < tamanhoLinhas; lin++) { for (int col = 0; col < tamanhoColunas; col++) { dgvCaminhosEncontrados.Rows[lin].Cells[col].Value = matrizCaminhosAchados[lin + 1, col + 1] + " - " + listaCidades.ElementAt(matrizCaminhosAchados[lin + 1, col + 1]).Nome; } } int copiaTamanhoColunas = tamanhoColunas; for (int lin = 1; tamanhoColunas > 1 && lin <= tamanhoLinhas; lin++) { while (matrizCaminhosAchados[lin, tamanhoColunas] == 0) { dgvCaminhosEncontrados.Rows[lin - 1].Cells[tamanhoColunas - 1].Value = ""; tamanhoColunas--; } tamanhoColunas = copiaTamanhoColunas; } dgvMelhorCaminho.ColumnCount = pilhaMenorCaminho.Tamanho() + 1; dgvMelhorCaminho.RowCount = 1; PilhaVetor <CaminhoMarte> pilhaParaMostrar = pilhaMenorCaminho.Copia().Inverte(); dgvMelhorCaminho.Rows[0].Cells[0].Value = idOrigem + " - " + listaCidades.ElementAt(idOrigem).Nome; for (int i = 1; !pilhaParaMostrar.EstaVazia(); i++) { dgvMelhorCaminho.Rows[0].Cells[i].Value = pilhaParaMostrar.OTopo().IdCidadeDestino + " - " + listaCidades.ElementAt(pilhaParaMostrar.Desempilhar().IdCidadeDestino).Nome; } }