Tucancitto

AF - Pb1 din Curs 10 - colorarea unei hărţi

Dec 14th, 2020 (edited)
580
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. void citire(int matrice[50][50], char culori[5][20], int& nr)
  5. {
  6.     std::ifstream fin("colorare.in");
  7.     fin >> nr;
  8.     for (int i = 0; i < 4; i++)
  9.         fin >> culori[i];
  10.  
  11.     int t1, t2;
  12.  
  13.     while (fin >> t1 >> t2)//pereche de tari vecine
  14.         matrice[t1 - 1][t2 - 1] = matrice[t2 - 1][t1 - 1] = 1;
  15.     fin.close();
  16. }
  17.  
  18. void afisare(int indiceCuloareTara[50], char culori[5][20], int nr)
  19. {
  20.     for (int i = 0; i < nr; i++)
  21.         std::cout << i + 1 << " " << culori[indiceCuloareTara[i]] << "\n";
  22. }
  23.  
  24. bool validareCuloare(int matrice[50][50], int indiceCuloareTara[50], int k)
  25. {
  26.     for (int i = 0; i < k; i++)
  27.         if (matrice[i][k] == 1 && indiceCuloareTara[i] == indiceCuloareTara[k])
  28.             return false;
  29.     return true;
  30. }
  31.  
  32. int alege(int matrice[50][50], int indiceCuloareTara[], int k)
  33. {
  34.     for (int i = 0; i < 4; i++) //am 4 culori
  35.     {
  36.         indiceCuloareTara[k] = i;
  37.         if (validareCuloare(matrice, indiceCuloareTara, k) == true)
  38.             return i;
  39.     }
  40.     return 0;
  41. }
  42.  
  43. void colorare(int nr, int matrice[50][50], int indiceCuloareTara[50])
  44. {
  45.     for (int i = 0; i < nr; i++)
  46.         indiceCuloareTara[i] = alege(matrice, indiceCuloareTara, i);
  47. }
  48.  
  49. int main()
  50. {
  51.     int matrice[50][50], indiceCuloareTara[50], nr;
  52.     char culori[5][20];
  53.  
  54.     citire(matrice, culori, nr);
  55.     colorare(nr, matrice, indiceCuloareTara);
  56.     afisare(indiceCuloareTara, culori, nr);
  57.  
  58.     return 0;
  59. }
  60.  
Add Comment
Please, Sign In to add comment