Dr4noel

CEVA FOR !P OINT

Mar 18th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.13 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. /*Alba Iulia - Cluj Napoca = 98 km
  8. Alba Iulia - Craiova = 296 km
  9. Alba Iulia - Sibiu = 74 km
  10. Alba Iulia - Timisoara = 219 km
  11. Arad - Oradea = 116 km
  12. Arad - Timisoara = 59 km
  13. Baia Mare - Cluj Napoca = 151 km
  14. Baia Mare - Satu Mare = 62km
  15. Bistrita - Cluj Napoca = 108 km
  16. Bistrita - Suceava = 196 km
  17. Bistrita - Targu Mures = 91 km
  18. Braila - Bucuresti = 196 km
  19. Braila - Piatra Neamt = 256 km
  20. Braila - Tulcea = 95 km
  21. Brasov - Bucuresti = 170 km
  22. Brasov - Piatra Neamt = 226 km
  23. Brasov - Pitesti = 140 km
  24. Brasov - Sibiu = 145 km
  25. Brasov - Targu Mures = 170 km
  26. Bucuresti - Constanta = 227 km
  27. Bucuresti - Piatra Neamt = 352 km
  28. Bucuresti - Pitesti = 120 km
  29. Cluj Napoca - Oradea = 157 km
  30. Cluj Napoca - Targu Mures = 107 km
  31. Constanta - Tulcea = 138 km
  32. Craiova - Pitesti = 124 km
  33. Craiova - Timisoara = 342 km
  34. Iasi - Piatra Neamt = 130 km
  35. Iasi - Suceava = 148 km
  36. Oradea - SatuMare = 138 km
  37. Sibiu - Targu Mures = 114 km
  38. */
  39.  
  40. int a[20][20];
  41. int km[20][20];
  42. int vizitat[20];
  43.  
  44. /*void Afisare() {
  45. for (int i = 0; i < 20; i++) {
  46. for (int j = 0; j < 20; j++) {
  47. cout << a[i][j] << " ";
  48. }
  49. cout << endl;
  50. }
  51. }*/
  52.  
  53.  
  54. void main() {
  55.  
  56. const char *nume[20] = { "Alba Iulia_0" , "Arad_1", "Baia Mare_2", "Bistrita_3","Braila_4", "Brasov_5", "Bucuresti_6","Cluj Napoca_7", "Constanta_8", "Craiova_9", "Iasi_10","Oradea_11","Piatra Neamt_12","Pitesti_13","Satu Mare_14","Sibiu_15", "Suceava_16","Targu Mures_17", "Timisoara_18","Tulcea_19" };
  57.  
  58. a[0][7] = 1;// 98;
  59. a[0][9] = 1;// 296;
  60. a[0][15] = 1;// 74;
  61. a[0][18] = 1;// 219;
  62. a[1][11] = 1;// 116;
  63. a[1][18] = 1;// 59;
  64. a[2][7] = 1;// 151;
  65. a[2][14] = 1;//62;
  66. a[3][7] = 1;// 108;
  67. a[3][16] = 1;// 196;
  68. a[3][17] = 1;// 91;
  69. a[4][6] = 1;// 196;
  70. a[4][12] = 1;// 256;
  71. a[4][19] = 1;// 95;
  72. a[5][6] = 1;// 170;
  73. a[5][12] = 1;// 226;
  74. a[5][13] = 1;// 140;
  75. a[5][15] = 1;// 145;
  76. a[5][17] = 1;// 170;
  77. a[6][8] = 1;// 227;
  78. a[6][12] = 1;// 352;
  79. a[6][13] = 1;// 120;
  80. a[7][11] = 1;// 157;
  81. a[7][17] = 1;// 107;
  82. a[8][19] = 1;// 138;
  83. a[9][13] = 1;// 124;
  84. a[9][18] = 1;// 342;
  85. a[10][12] = 1;// 130;
  86. a[10][16] = 1;// 148;
  87. a[11][14] = 1;// 138;
  88. a[15][17] = 1;// 114;
  89.  
  90. km[0][7] = 98;
  91. km[0][9] = 296;
  92. km[0][15] = 74;
  93. km[0][18] = 219;
  94. km[1][11] = 116;
  95. km[1][18] = 59;
  96. km[2][7] = 151;
  97. km[2][14] = 62;
  98. km[3][7] = 108;
  99. km[3][16] = 196;
  100. km[3][17] = 91;
  101. km[4][6] = 196;
  102. km[4][12] = 256;
  103. km[4][19] = 95;
  104. km[5][6] = 170;
  105. km[5][12] = 226;
  106. km[5][13] = 140;
  107. km[5][15] = 145;
  108. km[5][17] = 170;
  109. km[6][8] = 227;
  110. km[6][12] = 352;
  111. km[6][13] = 120;
  112. km[7][11] = 157;
  113. km[7][17] = 107;
  114. km[8][19] = 138;
  115. km[9][13] = 124;
  116. km[9][18] = 342;
  117. km[10][12] = 130;
  118. km[10][16] = 148;
  119. km[11][14] = 138;
  120. km[15][17] = 114;
  121.  
  122. /*km[7][0] = 98;
  123. km[9][0] = 296;
  124. km[15][0] = 74;
  125. km[18][0] = 219;
  126. km[11][1] = 116;
  127. km[18][1] = 59;
  128. km[7][2] = 151;
  129. km[14][2] = 62;
  130. km[7][3] = 108;
  131. km[16][3] = 196;
  132. km[17][3] = 91;
  133. km[6][4] = 196;
  134. km[12][4] = 256;
  135. km[19][4] = 95;
  136. km[6][5] = 170;
  137. km[12][5] = 226;
  138. km[13][5] = 140;
  139. km[15][5] = 145;
  140. km[17][5] = 170;
  141. km[8][6] = 227;
  142. km[12][6] = 352;
  143. km[13][6] = 120;
  144. km[11][7] = 157;
  145. km[17][7] = 107;
  146. km[19][8] = 138;
  147. km[13][9] = 124;
  148. km[18][9] = 342;
  149. km[12][10] = 130;
  150. km[16][10] = 148;
  151. km[14][11] = 138;
  152. km[17][15] = 114;*/
  153.  
  154. int noduri[20];
  155. int nr_noduri = 0;
  156. int n = 20;
  157. int oras_Start, oras_Destinatie;
  158. int solutie[20];
  159. int parinte[20];
  160. int nr_solutie = 0;
  161. int kmTotali = 0;
  162.  
  163. for (int i = 0; i < 20; i++) {
  164. for (int j = 0; j < 20; j++) {
  165. a[j][i] = a[i][j];
  166. km[j][i] = km[i][j];
  167. }
  168. }
  169.  
  170. int cautare;
  171.  
  172. cout << "Introduceti indicele orasului caruia vreti sa ii aflam vecinii: "; cin >> cautare; cout << endl;
  173. for (int i = 0; i < 20; i++)
  174. if (a[cautare][i] == 1) {
  175. cout << nume[i] << " ";
  176. }
  177. // CAUTAREA IN LATIME
  178.  
  179. cout << endl << "Introduceti orasul de start: "; cin >> oras_Start;
  180. cout << endl << "Introduceti orasul de final: "; cin >> oras_Destinatie;
  181.  
  182. noduri[0] = oras_Start;
  183. nr_noduri++;
  184. vizitat[oras_Start] = 1;
  185. int gasit = 0;
  186. int nod;//nodul curent pe care il initializam
  187. while (gasit == 0 && (nr_noduri != 0)) {
  188. nod = noduri[0];//scoatem primul element din lista de noduri si il retinem in noduri
  189. for (int i = 0; i < nr_noduri - 1; i++) {
  190. noduri[i] = noduri[i + 1];
  191. }
  192. nr_noduri--;
  193. if (nod == oras_Destinatie) {
  194. gasit = 1;
  195. }
  196. else {
  197. for (int i = 0; i < 20; i++) {
  198. if ((a[nod][i] == 1) && (vizitat[i] == 0)) {
  199. noduri[nr_noduri] = i;
  200. nr_noduri++;
  201. vizitat[i] = 1;
  202. parinte[i] = nod;
  203. }
  204. }
  205. }
  206. }
  207.  
  208. if (gasit == 0) {
  209. cout << "\nNu s-a gasit\n\n";
  210. }
  211. else {
  212.  
  213. while (oras_Destinatie != oras_Start) {
  214. solutie[nr_solutie++] = oras_Destinatie;
  215. oras_Destinatie = parinte[oras_Destinatie];
  216. }
  217. solutie[nr_solutie] = oras_Start;
  218.  
  219. }
  220. cout << "\nCel mai rapid drum este\n";
  221. for (int i = nr_solutie; i >= 0; i--) {
  222. cout << nume[solutie[i]] << " ";
  223. if (i > 0) {
  224. kmTotali += km[solutie[i]][solutie[i - 1]];
  225. }
  226. }
  227. cout << "\nKm = " << kmTotali;
  228.  
  229. _getch();
  230. }
Add Comment
Please, Sign In to add comment