vadimk772336

map

Mar 8th, 2022
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <map>
  5. using namespace std;
  6.  
  7. struct vertex
  8. {
  9. bool isterminal = false;
  10. //std::vector<struct adj_vertex> adj_list;
  11. map<char,int> adj_list;
  12. int list_size = 0;
  13. int number_vertex;
  14.  
  15. };
  16.  
  17. struct vertex_2
  18. {
  19. int u;
  20. int v;
  21. bool isterminal = false;
  22. isvisited = false;
  23. }
  24.  
  25. struct adj_vertex
  26. {
  27. int number_vertex;
  28. char symbol;
  29. };
  30.  
  31. class Graph
  32. {
  33. struct vertex* graph;
  34. int count_edges;
  35. int count_vertex;
  36.  
  37. public:
  38. Graph(int count_vertex, int* terminals, int k);
  39. void addEdge(int i, int j, char symbol);
  40. void display();
  41. };
  42.  
  43. Graph::Graph(int count_vertex, int* terminals, int k)
  44. {
  45. graph = new vertex[count_vertex];
  46. this->count_edges = 0;
  47. this->count_vertex = count_vertex;
  48.  
  49. for (int i = 0; i < k; ++i)
  50. {
  51. graph[terminals[i]].isterminal = true;
  52. }
  53. }
  54.  
  55. void Graph::addEdge(int i, int j, char symbol)
  56. {
  57. //adj_vertex buff;
  58. //buff.number_vertex = j;
  59. //buff.symbol = symbol;
  60. graph[i].adj_list[symbol] = j;
  61. //cout << graph[i].adj_list[symbol] << endl;
  62. //graph[i].adj_list.push_back(buff);
  63.  
  64. graph[i].list_size++;
  65. //this->count_edges++;
  66. }
  67.  
  68.  
  69. void Graph::display()
  70. {
  71. cout << "\n print:" << endl;
  72. for (int i = 0; i < this->count_vertex; i++)
  73. {
  74. cout << "vertex: " << i << " ";
  75. if (graph[i].isterminal) cout << "isterminal" << " ";
  76. int size = graph[i].adj_list.size();
  77. cout << "adj_vertexes: ";
  78.  
  79. for(const auto& elem : graph[i].adj_list)
  80. {
  81. std::cout << "(" << elem.first << "," << elem.second << ")" << "; ";
  82. }
  83. cout << endl;
  84. }
  85. }
  86.  
  87.  
  88. Graph ReadDFA(int n, int k, int l)
  89. {
  90. int u,v;
  91. char c;
  92. int t[k];
  93. for (int i = 0; i < k; ++i)
  94. cin >> t[i];
  95.  
  96. Graph DFA(n,t,k);
  97. for (int i = 0; i < n*l; ++i)
  98. {
  99. cin >> u >> c >> v;
  100. DFA.addEdge(u,v,c);
  101. }
  102.  
  103. return DFA;
  104. }
  105.  
  106. int main()
  107. {
  108.  
  109. //int a[3] = {1,2,3};
  110. //Graph g(5,a,3);
  111. //g.addEdge(1,2,'c');
  112. //g.display();
  113.  
  114. int n1, k1, l1; //n — колво состояний. k — колво терминальных состояний. l — колво букв в алфавите.
  115. int n2, k2, l2;
  116.  
  117. cin >> n1 >> k1 >> l1;
  118. Graph DFA1 = ReadDFA(n1, k1, l1);
  119.  
  120. cin >> n2 >> k2 >> l2;
  121. Graph DFA2 = ReadDFA(n2, k2, l2);
  122.  
  123. //DFA1.display();
  124. // DFA2.display();
  125.  
  126. /*
  127. vertex_2 buff;
  128. for (int i = 0; i < n1; ++i)
  129. {
  130. for (int j = 0; j < n2; ++j)
  131. {
  132. // передаю индексы вершин в
  133. }
  134. }
  135. */
  136.  
  137.  
  138.  
  139. return 0;
  140. }
  141.  
  142.  
  143.  
Advertisement
Add Comment
Please, Sign In to add comment