Advertisement
ViniciusSDSilva

Untitled

Apr 24th, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. int matriz[10][10], visitado[10], n, custo=0;
  6.  
  7. void ler();
  8. void imprimir();
  9. int minimo(int c);
  10. void custoMinimo(int cidade);
  11.  
  12. void main() {
  13.   system("cls");
  14.  
  15.   ler();
  16.  
  17.   printf("\n\nO caminho eh: \n\n");
  18.  
  19.   custoMinimo(0);
  20.  
  21.   imprimir();
  22.  
  23.   getch();
  24. }
  25.  
  26. void custoMinimo(int cidade) {
  27.   int i, nCidade;
  28.  
  29.   visitado[cidade] = 1;  
  30.  
  31.   printf("%d -->", cidade + 1);
  32.   nCidade = minimo(cidade);
  33.  
  34.   if(nCidade == 999) {
  35.     nCidade = 0;
  36.     printf("%d", nCidade+1);
  37.     custo += matriz[cidade][nCidade];
  38.     return;
  39.   }
  40.  
  41.   custoMinimo(nCidade);
  42.  
  43. }
  44.  
  45. int minimo(int c) {
  46.   int i, nC = 999;
  47.   int minimo = 999, kMinimo;
  48.  
  49.   for(i = 0; i < n; i++) {
  50.     if((matriz[c][i] != 0) && (visitado[i] == 0))
  51.       if(matriz[c][i] + matriz[i][c] < minimo) {
  52.         minimo = matriz[i][c]; //+matriz[c][i];
  53.         kMinimo = matriz[c][i];
  54.         nC = i;
  55.       }
  56.   }
  57.  
  58.   if(minimo != 999)
  59.     custo += kMinimo;
  60.  
  61.   return nC;
  62.  
  63. }
  64.  
  65. void imprimir() {
  66.  
  67.   printf("\n\nMinimum custo:");
  68.   printf("%d", custo);
  69.  
  70. }
  71.  
  72. void ler() {
  73.   int i, j;
  74.  
  75.   printf("Informe o numero de cidades: ");
  76.   scanf("%d", &n);
  77.   printf("\nInforme o custo da matriz\n");
  78.  
  79.   for(i = 0; i < n; i++) {
  80.     printf("\nInforme os elementos da linha # : %d\n", i+1);
  81.     for(j = 0; j < n; j++)
  82.       scanf("%d", &matriz[i][j]);
  83.     visitado[i] = 0;
  84.   }
  85.  
  86.   printf("\n\nO custo da lista eh:\n\n");
  87.   for( i=0;i < n;i++) {
  88.     printf("\n\n");
  89.     for(j = 0; j < n; j++)
  90.       printf("\t%d", matriz[i][j]);
  91.   }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement