• Source
    1. #include<bits/stdc++.h>
    2.  
    3. using namespace std;
    4.  
    5. vector<int>vec[15],result;
    6.  
    7. bool mat[6][6];
    8.  
    9. void backtracking(int node)
    10. {
    11. int i;
    12.  
    13. if(result.size()==9)
    14. {
    15. for(i=0;i<result.size();i++)
    16. {
    17. printf("%d",result[i]);
    18. }
    19. puts("");
    20. return;
    21. }
    22.  
    23. for(i=0;i<vec[node].size();i++)
    24. {
    25. if(mat[node][vec[node][i]]==0 && mat[vec[node][i]][node]==0)
    26. {
    27. mat[node][vec[node][i]] = 1;
    28.  
    29. mat[vec[node][i]][node] = 1;
    30.  
    31. result.push_back(vec[node][i]);
    32.  
    33. backtracking(vec[node][i]);
    34.  
    35. mat[node][vec[node][i]] = 0;
    36.  
    37. mat[vec[node][i]][node] = 0;
    38.  
    39. result.pop_back();
    40.  
    41. }
    42. }
    43.  
    44. return;
    45. }
    46.  
    47. int main()
    48. {
    49. vec[1].push_back(2);
    50. vec[1].push_back(3);
    51. vec[1].push_back(5);
    52.  
    53. vec[2].push_back(1);
    54. vec[2].push_back(3);
    55. vec[2].push_back(5);
    56.  
    57. vec[3].push_back(1);
    58. vec[3].push_back(2);
    59. vec[3].push_back(4);
    60. vec[3].push_back(5);
    61.  
    62. vec[4].push_back(3);
    63. vec[4].push_back(5);
    64.  
    65. vec[5].push_back(1);
    66. vec[5].push_back(2);
    67. vec[5].push_back(3);
    68. vec[5].push_back(4);
    69.  
    70. result.push_back(1);
    71.  
    72. backtracking(1);
    73.  
    74. return 0;
    75. }