Advertisement
Guest User

lala

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