Advertisement
madalinaradu

IA c adancime

May 30th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.77 KB | None | 0 0
  1. int adancime(int start, int stop, int A[20][20], char *nume[20]) {
  2.  
  3.  
  4.  
  5.     int nrNoduri = 0, contorViz = 0;
  6.  
  7.     int noduri[20];//orasele in asteptare
  8.     int viz[20];//orase deja vizitate
  9.     int parinte[20];//parinte[i]=j =>j este parintele lui i
  10.     int gasit = 0;
  11.     for (int i = 0; i < 20; i++)
  12.         viz[i] = 0;
  13.     viz[start] = 1;
  14.     noduri[0] = start;
  15.     nrNoduri++;
  16.     int contorpas = 0;
  17.  
  18.     cout << "Pasul " << contorpas++ << ": ";
  19.     for (int i = 0; i < nrNoduri; i++)
  20.         cout << nume[noduri[i]] << " ";
  21.     cout << endl;
  22.  
  23.  
  24.     while (gasit == 0 && nrNoduri > 0) {
  25.         int nod = noduri[0];
  26.         for (int i = 0; i < nrNoduri - 1; i++)
  27.             noduri[i] = noduri[i + 1];
  28.         nrNoduri--;
  29.         if (nod == stop)
  30.             gasit = 1;
  31.         else
  32.             for (int i = 0; i<20; i++)
  33.                 if ((A[nod][i] != 0) && (viz[i] == 0)) {
  34.                     for (int j = nrNoduri-1; j >= 0; j--)
  35.                         noduri[j+1] = noduri[j];
  36.                     nrNoduri++;
  37.                     noduri[0] = i;
  38.                     viz[i] = 1;
  39.                     parinte[i] = nod;
  40.                 }
  41.         cout << "Pasul " << contorpas++ << ": ";
  42.         for (int i = 0; i < nrNoduri; i++)
  43.             cout << nume[noduri[i]] << " ";
  44.         cout << endl;
  45.  
  46.     }
  47.     cout << endl;
  48.  
  49.     ///Reconstituire traseu.
  50.     int temp = stop;
  51.     int contorTraseu = 0;
  52.     int traseu[20];
  53.     while (parinte[temp] != start) {
  54.         traseu[contorTraseu++] = temp;
  55.         temp = parinte[temp];
  56.     }
  57.     traseu[contorTraseu++] = temp;
  58.     traseu[contorTraseu++] = parinte[temp];
  59.     for (int i = contorTraseu - 1; i >= 0; i--) {
  60.         cout << nume[traseu[i]] << ", ";
  61.     }
  62.  
  63.     return 0;
  64. }
  65. int H[20];
  66. int CreareMatrice(int A[20][20]) {
  67.  
  68.     A[0][1] = 75;
  69.     A[1][0] = 75;
  70.  
  71.     A[0][2] = 140;
  72.     A[2][0] = 140;
  73.  
  74.     A[0][3] = 118;
  75.     A[3][0] = 118;
  76.  
  77.     A[1][4] = 71;
  78.     A[4][1] = 71;
  79.  
  80.     A[4][2] = 151;
  81.     A[2][4] = 151;
  82.  
  83.     A[3][7] = 111;
  84.     A[7][3] = 111;
  85.  
  86.     A[7][10] = 70;
  87.     A[10][7] = 70;
  88.  
  89.     A[10][11] = 75;
  90.     A[11][10] = 75;
  91.  
  92.     A[11][12] = 120;
  93.     A[12][11] = 120;
  94.  
  95.     A[2][5] = 99;
  96.     A[5][2] = 99;
  97.  
  98.     A[2][6] = 80;
  99.     A[6][2] = 80;
  100.  
  101.     A[6][12] = 146;
  102.     A[12][6] = 146;
  103.  
  104.     A[6][9] = 97;
  105.     A[9][6] = 97;
  106.  
  107.     A[12][9] = 138;
  108.     A[9][12] = 138;
  109.  
  110.     A[5][8] = 211;
  111.     A[8][5] = 211;
  112.  
  113.     A[9][8] = 101;
  114.     A[8][9] = 101;
  115.  
  116.     A[8][13] = 90;
  117.     A[13][8] = 90;
  118.  
  119.     A[8][14] = 85;
  120.     A[14][8] = 85;
  121.  
  122.     A[14][15] = 98;
  123.     A[15][14] = 98;
  124.  
  125.     A[15][16] = 86;
  126.     A[16][15] = 86;
  127.  
  128.     A[14][17] = 142;
  129.     A[17][14] = 142;
  130.  
  131.     A[17][18] = 92;
  132.     A[18][17] = 92;
  133.  
  134.     A[18][19] = 87;
  135.     A[19][18] = 87;
  136.  
  137.  
  138.     return 0;
  139. }
  140.  
  141.  
  142. int main() {
  143.     char *nume[20] = { "Arad", "Zerind", "Sibiu", "Timisoara", "Oradea", "Fagaras", "Ramnicu Valcea", "Lugoj", "Bucuresti", "Pitesti", "Mehadia", "Drobeta", "Craiova", "Giurgiu", "Urziceni", "Hirsova", "Eforie", "Vaslui", "Iasi", "Neamt" };
  144.     //                   0         1        2          3          4          5              6            7          8           9         10          11        12         13         14          15         16        17       18      19
  145.     for(int i=0; i<20; i++)}
  146.         for(j=0; j<20; j++){
  147.             A[i][j]=0;
  148.         }
  149.         }
  150.  
  151.  
  152.     CreareMatrice(A);
  153.     for(int i=0;i<20;i++){
  154.         for(int j=i+1;j<20;j++){
  155.             if(A[i][j]!=0){
  156.                 printf("%5d%5d%5d\n",i,j,A[i][j]);
  157.             }
  158.         }
  159.     }
  160.     cout<<"-----------"<<endl;
  161.     CreareVector(H);
  162.     int start = 0, stop = 8;
  163.     cout << endl << endl<< "Cautare in adancime:" << endl;
  164.     adancime(start, stop, A, nume);
  165.  
  166.     _getch();
  167.     return 0;
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement