vadimk772336

Untitled

Nov 22nd, 2021
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdlib> // для функций rand() и srand()
  4. #include <list>
  5. using namespace std;
  6.  
  7. const int p = 2000000033;
  8.  
  9. struct vertex
  10. {
  11. bool visited = false;
  12. vector <int> adj_list;
  13. };
  14.  
  15. class Graph
  16. {
  17. vertex* vertexes;
  18. int* edge_value_list;
  19. int size;
  20.  
  21. public:
  22. Graph(int n);
  23. int get_size();
  24. void addEdge(int i, int j);
  25. void print_graph();
  26. };
  27.  
  28. Graph::Graph(int n)
  29. {
  30. vertexes = new vertex[n];
  31. edge_value_list = new int[n][n];
  32. size = n;
  33. }
  34.  
  35. int Graph::get_size()
  36. {
  37. return size;
  38. }
  39.  
  40. void Graph::addEdge(int i, int j)
  41. {
  42. if (i >= n || j>= n)
  43. cout << "Выход за пределы";
  44. vertexes[i].adj_list.push_back(j);
  45. vertexes[j].adj_list.push_back(i);
  46.  
  47. }
  48.  
  49.  
  50. void Graph::print_graph()
  51. {
  52. cout << "\n print:" << endl;
  53. for (int i=0; i < size; i++)
  54. {
  55. cout << "visited = " << vertexes[i].visited << "; i= " << i << ": ";
  56. int size = vertexes[i].adj_list.size();
  57. for(int j = 0; j < size; ++j)
  58. {
  59. cout << vertexes[i].adj_list[j] << " ";
  60. }
  61. cout << endl;
  62. }
  63. }
  64.  
  65. int rand_int(int min, int max)
  66. {
  67. static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0);
  68. // Равномерно распределяем рандомное число в нашем диапазоне
  69. return static_cast<int>(rand() * fraction * (max - min + 1) + min);
  70. }
  71.  
  72. int hash(a,b,k)
  73. {
  74. return a*k+b;
  75. }
  76.  
  77. int main()
  78. {
  79. srand(4541);
  80. int n,a,b;
  81.  
  82. cin >> n;
  83.  
  84. vector A(3*n); //Массив меток
  85. vector K(n); //Массив ключей
  86.  
  87. for (int i = 0; i < n; ++i)
  88. cin >> K[i]
  89.  
  90.  
  91. bool flag = True;
  92.  
  93.  
  94.  
  95. while (flag)
  96. {
  97. Graph g(n);
  98.  
  99. a1 = rand_int(1,p-1);
  100. b1 = rand_int(0,p-1);
  101. a2 = rand_int(1,p-1);
  102. b2 = rand_int(0,p-1);
  103.  
  104. for (int i = 0; i < n; ++i)
  105. {
  106. alpha_k = hash(a1,b1,K[i]);
  107. beta_k = hash(a2,b2,K[i]);
  108. g.addEdge(alpha_k,beta_k);
  109.  
  110. }
  111.  
  112. }
  113.  
  114.  
  115. return 0;
  116. }
  117.  
Advertisement
Add Comment
Please, Sign In to add comment