fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int n, m;
  6. int susedi[101][101];
  7. int boje[101];
  8.  
  9. bool moze_boja(int cvor, int boja)
  10. {
  11. for (int predajnik = 0; predajnik < n; predajnik++)
  12. if (susedi[predajnik][cvor] and boje[predajnik] == boja)
  13. return false;
  14. return true;
  15. }
  16.  
  17. bool resi(int cvor)
  18. {
  19. if (cvor == n)
  20. return true;
  21. for (int boja = 1; boja <= 3; boja++)
  22. {
  23. if (moze_boja(cvor, boja))
  24. {
  25. boje[cvor] = boja;
  26. if (resi(cvor + 1))
  27. return true;
  28. boje[cvor] = 0;
  29. }
  30. }
  31. return false;
  32. }
  33.  
  34. int main()
  35. {
  36. cin >> n >> m;
  37. for (int i = 0; i < n; i++)
  38. {
  39. boje[i] = 0;
  40. for (int j = 0; j < m; j++)
  41. susedi[i][j] = false;
  42. }
  43. for (int i = 0; i < m; i++)
  44. {
  45. int od_prijemnika, ka_prijemniku;
  46. cin >> od_prijemnika >> ka_prijemniku;
  47. susedi[od_prijemnika][ka_prijemniku] = true;
  48. susedi[ka_prijemniku][od_prijemnika] = true;
  49. }
  50. if (resi(0))
  51. {
  52. for (int i = 0; i < n; i++)
  53. cout << boje[i] << " ";
  54. cout << endl;
  55. }
  56. else
  57. cout << "-" << endl;
  58. return 0;
  59. }
Success #stdin #stdout 0s 5320KB
stdin
5
5
0 1
0 4
1 2
1 4
2 3
2 4
3 4
stdout
1 2 1 2 3