Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. void one_location(int n, float g[50][50], int type)
  2. {
  3. int start, end, i, j, next, count = 0, already[10] = {}, visit[50];
  4. float min, shortest[10], distance[10], save;
  5. printf("Start location: ");
  6. scanf("%d", &start);
  7. if (type == 2)
  8. {
  9. printf("End location: ");
  10. scanf("%d", &end);
  11. }
  12. for (i = 0; i < n; i++)
  13. for (j = 0; j < n; j++)
  14. if (g[i][j] == 0)
  15. g[i][j] = infinity;
  16. min = infinity;
  17. for (i = 0; i < n; i++)
  18. {
  19. distance[i] = g[start][i];
  20. shortest[i] = distance[i];
  21. visit[i] = start;
  22. if (min > distance[i])
  23. next = i;
  24.  
  25.  
  26. }
  27. min = infinity;
  28. j = 0;
  29. while (count < n - 1)
  30. {
  31. for (i = 0; i < n; i++)
  32.  
  33. {
  34. if (i != start)
  35. {
  36. already[next] = 1;
  37. save = distance[i];
  38. distance[i] = distance[next] + g[next][i];
  39. if (distance[i] < shortest[i])
  40. {
  41. shortest[i] = distance[i];
  42. visit[i] = next;
  43. }
  44. else
  45. distance[i] = save;
  46. if (already[i] != 1 && min > shortest[i])
  47. {
  48. next = i;
  49.  
  50. }
  51.  
  52. }
  53. }
  54. count++;
  55. }
  56. if (type == 1)
  57. {
  58. for (i = 0; i < n; i++)
  59. if (i != start)
  60. {
  61. j = i;
  62. printf("\nThe shortest distance from %d to %d is %f from: ", start, i, distance[i]);
  63. printf("%d", i);
  64. while (j != start)
  65. {
  66. j = visit[j];
  67. printf("<-%d", j);
  68. }
  69. }
  70. }
  71. else if (type == 2)
  72. {
  73. printf("The shortest distance from %d to %d is %f from: ", start, end, distance[end]);
  74. printf("%d", end);
  75. j = end;
  76. while (j != start)
  77. {
  78. j = visit[j];
  79. printf("<-%d", j);
  80. }
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement