Advertisement
Guest User

Untitled

a guest
May 20th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include "lab.h"
  5. int graf(char *str)
  6. {
  7. int i = 0;
  8. int k = 0;
  9. printf("Versini\r\n");
  10. gets(str);
  11. printf("%s\r\n", str);
  12. while(str[i] != 0)
  13. {
  14. i++;
  15. k++;
  16. }
  17. return k;
  18. }
  19. int deikstra()
  20. {
  21. int t, i, j;
  22. char str[50] = {0};
  23. t = graf(str);
  24. int mass[t][t];
  25. int rass[t];
  26. int ver[t];
  27. int temp;
  28. int ind, min;
  29. for (i = 0; i < t; i++)
  30. {
  31. mass[i][i] = 0;
  32. for (j = i + 1; j < t; j++)
  33. {
  34. printf("vvedite rasst %d - %d: ", i + 1, j + 1);
  35. scanf("%d", &temp);
  36. mass[i][j] = temp;
  37. mass[j][i] = temp;
  38. }
  39. }
  40. for ( i = 0; i < t; i++)
  41. {
  42. for (j = 0; j < t; j++)
  43. printf("%d ", mass[i][j]);
  44. printf("\n");
  45. }
  46. for (int i = 0; i < t; i++)
  47. {
  48. rass[i] = 10000;
  49. ver[i] = 1;
  50. }
  51. rass[0] = 0;
  52. do {
  53. ind = 10000;
  54. min = 10000;
  55. for (int i = 0; i < t; i++)
  56. {
  57. if ((ver[i] == 1) && (rass[i]<min))
  58. {
  59. min = rass[i];
  60. ind = i;
  61. }
  62. }
  63. if (ind != 10000)
  64. {
  65. for (int i = 0; i < t; i++)
  66. {
  67. if (mass[ind][i] > 0)
  68. {
  69. temp = min + mass[ind][i];
  70. if (temp < rass[i])
  71. {
  72. rass[i] = temp;
  73. }
  74. }
  75. }
  76. ver[ind] = 0;
  77. }
  78. } while (ind < 10000);
  79. printf("\nKrat4 rasst ot vershin: \n");
  80. for (int i = 0; i < t; i++)
  81. printf("%4d ", rass[i]);
  82. return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement