Advertisement
BowserFlash13

Untitled

Jun 19th, 2020
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. #include <iterator>
  4. #include <vector>
  5.  
  6. #define nVertex 10
  7.  
  8. using namespace std;
  9.  
  10. void stvoriGraf(vector<int> adj[], int V)
  11. {
  12. for (int i = 0; i < V; i++)
  13. {
  14. for (int j = 0; j < V; j++)
  15. {
  16. int create_edge = rand() % 5;
  17. if (create_edge == 1 && i != j)
  18. {
  19. adj[i].push_back(j);
  20. adj[j].push_back(i);
  21. }
  22. }
  23. }
  24. }
  25.  
  26. void ispisiGraf(vector<int> adj[], int V)
  27. {
  28. int brojVeza = 0; //pomocna varijabla za prebrojavanje veza
  29. bool povezani[V][V]; //ovdje cemo pohranjivati vrijednosti 0 ako ne postoji veza a 1 ako postoji
  30.  
  31. for (int i = 0; i < V; i++)
  32. {
  33. for (int j = 0; j < V; j++)
  34. {
  35. povezani[i][j] = 0; //postavljamo sve veze na 0
  36. }
  37. }
  38.  
  39. for (int i = 0; i < V; i++)
  40. {
  41. for (auto j = adj[i].begin(); j != adj[i].end(); j++)
  42. {
  43. brojVeza = brojVeza + 1; //prebrojavamo sve veze koje postoje
  44. povezani[i][*j] = 1; //ako veza postoji postavljamo vrijednost na 1
  45. }
  46. }
  47.  
  48. cout << "Broj veza u grafu je: " << brojVeza / 2 << endl;
  49. //cout << endl << "Veze koje je potrebno povezati: " << endl;
  50. for (int i = 0; i < V; i++)
  51. {
  52. //cout << "vrh " << i << " sa vrhovima: ";
  53. for (int j = 0; j < V; j++)
  54. {
  55. if (povezani[i][j] == 0 && i != j){ //provjeravamo ako veza ne postoji,
  56. //pohranjena vrijednost nam je 0
  57. adj[i].push_back(j);
  58. adj[j].push_back(i);
  59. povezani[i][j] = 1;
  60. //cout << "Stvorena je veza " << i << " - " << j << endl;
  61. }
  62. }
  63. //cout << endl;
  64. }
  65.  
  66.  
  67. int brojVeza1 = 0;
  68.  
  69. for (int i = 0; i < V; i++)
  70. {
  71. //cout << "vrh " << i << " sa vrhovima: ";
  72. for (int j = 0; j < V; j++)
  73. {
  74. if (povezani[i][j] == 1 && i != j) {
  75. brojVeza1 = brojVeza1 + 1;
  76. }
  77. }
  78. //cout << endl;
  79. }
  80.  
  81. cout << "Broj veza1: " << brojVeza1 / 2 << endl;
  82. }
  83.  
  84. int main()
  85. {
  86. vector<int> adj[nVertex];
  87. stvoriGraf(adj, nVertex);
  88.  
  89. //potrebno je prebrojati veze u grafu, potpuno povezan graf sadrzi n*(n-1)/2 veza
  90. int maxVeza = nVertex * (nVertex - 1) / 2;
  91. cout << "Max broj veza u grafu je: " << maxVeza << endl;
  92.  
  93. ispisiGraf(adj, nVertex);
  94.  
  95. return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement