Advertisement
Guest User

Untitled

a guest
Nov 12th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <string>
  5. #include <cstdlib> // для system
  6. using namespace std;
  7.  
  8. int** elements;
  9. int maxdepth = 0;
  10.  
  11. int get(int index, int depth) {
  12. int m = elements[index][0];
  13. if (depth > maxdepth) {
  14. maxdepth = depth;
  15. }
  16. int* inputs = new int [m];
  17. if (m == 0) {
  18. delete inputs;
  19. return elements[index][1];
  20. }
  21. for (int i = 1; i < m + 1; i++) {
  22. inputs[i-1] = get(elements[index][i], depth + 1);
  23. }
  24. int num = 0;
  25. for (int i = 0; i < m; i++) {
  26. num += inputs[i] << (m - i - 1);
  27. }
  28. delete inputs;
  29. return elements[index][m + 1 + num];
  30. }
  31.  
  32. int main()
  33. {
  34. int n;
  35. cin >> n;
  36. elements = new int *[n];
  37. for (int i = 0; i < n; i++) {
  38. elements[i] = new int [((1 << 5) + 6)];
  39. }
  40. vector<int> vars;
  41. for (int i = 0; i < n; i++) {
  42. int m;
  43. cin >> m;
  44. if (m == 0) {
  45. elements[i][0] = 0;
  46. vars.push_back(i);
  47. } else {
  48. elements[i][0] = m;
  49. for (int j = 1; j < m + 1; j++) {
  50. int k;
  51. cin >> k;
  52. k--;
  53. elements[i][j] = k;
  54. }
  55. for (int j = 0; j < 1 << m; j++) {
  56. cin >> elements[i][j + m + 1];
  57. }
  58. }
  59. }
  60. string line = "";
  61. for (int i = 0; i < 1 << vars.size(); i++) {
  62. for (int j = 0; j < vars.size(); j++) {
  63. elements[vars[j]][1] = (i >> (vars.size() - j - 1)) & 1;
  64. }
  65. line += std::to_string(get(n - 1, 0));
  66. }
  67. cout << maxdepth << endl << line << endl;
  68. for (int i = 0; i < n; i++) {
  69. delete [] elements[i];
  70. }
  71. delete[] elements;
  72. system("pause");
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement