Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. //Ștefan Șindilar
  2.  
  3. #include <bits/stdc++.h>
  4. #define NMAX 1e2
  5.  
  6. using namespace std;
  7.  
  8. ifstream fin("drumuri.in");
  9. ifstream f("orase.in");
  10. ofstream fout("date.out");
  11.  
  12. int n;
  13. char orase[256][256];
  14.  
  15. vector < vector < int > > G(NMAX, vector < int >(NMAX));
  16. vector < int > dist(NMAX, INT_MAX);
  17. vector < bool > visited(NMAX, false);
  18.  
  19. void Read()
  20. {
  21. fin >> n;
  22. int x, y, c;
  23. while(!fin.eof())
  24. {
  25. fin >> x >> y >> c;
  26. G[x][y] = G[y][x] = c;
  27. }
  28. fin.close();
  29. int i = 1;
  30. for(; i <= n; ++i)
  31. f >> orase[i];
  32. f.close();
  33. }
  34.  
  35. int MinDistance()
  36. {
  37. int minn = INT_MAX, min_index, i = 1;
  38.  
  39. for(; i <= n; ++i)
  40. if(visited[i] == false && dist[i] <= minn)
  41. {
  42. minn = dist[i];
  43. min_index = i;
  44. }
  45. return min_index;
  46. }
  47.  
  48. void Print()
  49. {
  50. int i = 1;
  51. for(; i <= n; ++i)
  52. {
  53. fout << " " << orase[i];
  54. int j = 1;
  55. for(; j <= 30 - strlen(orase[i]); ++j)
  56. fout << " ";
  57. fout << dist[i] << endl;
  58. }
  59. }
  60.  
  61. void Dijkstra(int node)
  62. {
  63. dist[node] = 0;
  64.  
  65. int i = 1;
  66. for(; i < n; ++i)
  67. {
  68. int p = MinDistance();
  69. visited[p] = true;
  70. int j = 1;
  71. for(; j <= n; j++)
  72. if(!visited[j] && G[p][j] && dist[p] != INT_MAX
  73. && dist[p] + G[p][j] < dist[j])
  74. dist[j] = dist[p] + G[p][j];
  75. }
  76. fout << "Din " << orase[node] << endl;
  77. Print();
  78. }
  79.  
  80. int main()
  81. {
  82. Read();
  83. int x;
  84. cout << "Nr orasului de plecare: ";
  85. cin >> x;
  86. Dijkstra(x);
  87. return 0;
  88. }
  89.  
  90. Radauti
  91. Suceava
  92. Milisauti
  93. Vicovu_de_Sus
  94. Gura_Humorului
  95. Vatra_Dornei
  96. Siret
  97. Campulung_Moldovenesc
  98. Cajvana
  99. Solca
  100. Falticeni
  101.  
  102. 11
  103. 2 3 27
  104. 3 1 10
  105. 1 7 19
  106. 2 7 43
  107. 2 9 31
  108. 3 9 13
  109. 3 10 17
  110. 2 5 35
  111. 10 5 29
  112. 5 8 32
  113. 8 6 43
  114. 1 4 23
  115. 1 5 45
  116. 1 8 75
  117. 5 11 36
  118. 2 11 43
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement