fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void showMatriz(int **a, int m, int n) {
  5. int i, j;
  6. for (i=0; i<m; i++) {
  7. for (j=0; j<n; j++)
  8. printf("%3i ", a[i][j]);
  9. printf("\n");
  10. }
  11. }
  12.  
  13. void markCell(int **a, int i, int j, int v) {
  14. if (!a[i][j]) {
  15. a[i][j] = v;
  16. markCell(a, i+1, j, v+1);
  17. markCell(a, i-1, j, v+1);
  18. markCell(a, i, j+1, v+1);
  19. markCell(a, i, j-1, v+1);
  20. }
  21. }
  22.  
  23. void longestPath(int m, int n) {
  24. int i, j;
  25. m += 2;
  26. int **matriz = malloc(m * sizeof(int *));
  27. n += 2;
  28. for (i=0; i<m; i++) {
  29. matriz[i] = malloc(n * sizeof(int));
  30. for (j=0; j<n; j++) {
  31. if (i && i<m-1 && j && j<n-1)
  32. scanf("%i", &matriz[i][j]);
  33. else matriz[i][j] = 1;
  34. }
  35. }
  36.  
  37. markCell(matriz, 1, 1, 1);
  38.  
  39. showMatriz(matriz, m, n);
  40. free(matriz);
  41. }
  42.  
  43. int main(void) {
  44. int m, n;
  45. scanf("%i %i\n", &m, &n);
  46. longestPath(m, n);
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0s 2292KB
stdin
20 20
0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0
0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0
stdout
  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
  1   1  18  19  58   1  60   1 128 127 114 113 114 153 154   1 190   1 200 199 200   1 
  1   2  17  20  57   1  59   1 129 126 115 112 115 152 155   1 189   1 201 198 201   1 
  1   3  16  21  56   1  58   1 130 125 116 111 116 151 156   1 188   1 202 197 202   1 
  1   4  15  22  55   1  57   1 131 124 117 110 117 150 157   1 187   1 203 196 203   1 
  1   5  14  23  54   1  56   1 132 123 118 109 118 149 158   1 186   1 204 195 204   1 
  1   6  13  24  53   1  55   1 133 122 119 108 119 148 159   1 185   1 205 194 205   1 
  1   7  12  25  52  53  54   1 134 121 120 107 120 147 160   1 184   1 206 193 206   1 
  1   8  11  26  51   1  55  56  57   1 121 106 121 146 161   1 183   1 207 192 207   1 
  1   9  10  27  50   1  56   1  58  81  82 105 122 145 162   1 182   1 208 191 208   1 
  1  10   1  28  49   1   1   1  59  80  83 104 123 144 163   1 181   1 209 190 209   1 
  1  11   1  29  48   1   1   1  60  79  84 103 124 143 164   1 180   1 210 189 210   1 
  1  12   1  30  47   1   1   1  61  78  85 102 125 142 165   1 179   1 211 188 211   1 
  1  13   1  31  46   1   1   1  62  77  86 101 126 141 166   1 178   1 212 187 212   1 
  1  14   1  32  45   1   1   1  63  76  87 100 127 140 167   1 177   1 213 186 213   1 
  1  15   1  33  44   1   1   1  64  75  88  99 128 139 168   1 176   1 214 185 214   1 
  1  16   1  34  43   1   1   1  65  74  89  98 129 138 169   1 175   1 215 184 215   1 
  1  17   1  35  42   1   1   1  66  73  90  97 130 137 170   1 174 175 176 183 216   1 
  1  18   1  36  41   1   1   1  67  72  91  96 131 136 171 172 173   1 177 182 217   1 
  1  19   1  37  40   1   1   1  68  71  92  95 132 135 172   1 174   1 178 181 218   1 
  1  20   1  38  39   1   1   1  69  70  93  94 133 134 173   1 175   1 179 180 219   1 
  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1