Advertisement
Guest User

Untitled

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