Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. using namespace std;
  4. int a[100][100],viz[100],n,m,x[100];
  5. void citire()
  6. {
  7. ifstream f("hamiltonian.txt");
  8. int i,j,x,y;
  9. f>>n>>m;
  10. for(i=1;i<=n;i++)
  11. for(j=1;j<=n;j++)
  12. f>>a[i][j];
  13. }
  14. void parcurgere_DF(int x)
  15. {
  16. int i;
  17. viz[x]=1;
  18. for(i=1;i<=n;i++)
  19. if(a[i][x]==1&&viz[i]!=1)
  20. parcurgere_DF(i);
  21. }
  22. int sol(int k)
  23. {
  24. if(k==n&&a[x[k]][x[1]]) return 1;
  25. else return 0;
  26. }
  27. int cond(int k)
  28. {
  29. if(a[x[k-1]][x[k]]==0&&k>1) return 0;
  30. for(int i=1;i<=k-1;i++)
  31. if(x[k]==x[i]) return 0; return 1;
  32. }
  33. void afisare()
  34. {
  35. cout<<"cu ciclu este";
  36. for(int i=1;i<=n;i++)
  37. cout<<x[i]<<" ";
  38. cout<<x[1];
  39. }
  40. void BACK()
  41. {
  42. int k=2,gasit,x[1]=1;
  43. while(k>1)
  44. {
  45. gasit=0;
  46. if(gasit==0&&x[k]<n) {x[k]++;
  47. if(cond(k)==1) gasit=1;
  48. }
  49. if(gasit==0) k--;
  50. else if(sol(k)==1) afisare;
  51. else {k++;
  52. x[k]=1;} else k--;}
  53.  
  54. }
  55.  
  56. int main()
  57. {
  58. citire();
  59. parcurgere_DF(1);
  60. int OK=1;
  61. for(int i=1;i<=n;i++)
  62. if(viz[i]==0)
  63. {
  64. OK=0;
  65. i=n+1;
  66. }
  67. if(OK==0)
  68. cout<<"graful nu este hamil";
  69. else
  70. cout<<"graful e hamil";
  71. BACK();
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement