Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. #include<cmath>
  4. using namespace std;
  5. int viz[100],a[100],b[100],n,m,x[100];
  6. void citire()
  7. {
  8. ifstream f("euleriann");
  9. f>>n>>m;
  10. int i,j,nr=1;
  11. while(f>>i>>j)
  12. {a[nr]=i;b[nr]=j;
  13. nr++;}
  14. }
  15. void parcurgere_df(int x)
  16. {
  17. int i;viz[x]=1;
  18. for(i=1;i<=n;i++)
  19. if(a[x]==1&&viz[i]!=1)
  20. parcurgere_df(i);}
  21. int conex()
  22. {
  23. parcurgere_df(1);
  24. for(int i=1;i<=n;i++)
  25. if(viz[i]==0)
  26. return 0;
  27. return 1;
  28. }
  29. int pare()
  30. {
  31. for(int i=1;i<=n;i++)
  32. {
  33. int d=0;
  34. for(int j=1;j<=m;j++)
  35. if(a[j]==i||b[j]==i)
  36. d++;
  37. if(d%2==1||d==0)
  38. return 0;
  39. }
  40. return 1;
  41. }
  42. int sol(int k)
  43. {
  44. int nf;
  45. if(k!=m)return 0;
  46. else{if(x[k]>0)
  47. nf=b[x[k]];
  48. else nf=a[-x[k]];
  49. }
  50. return(nf==a[x[1]]);
  51. }
  52. int cond(int k)
  53. {
  54. int i,nf;
  55. for(i=1;i<k;i++)
  56. if(abs(x[i])==abs(x[i]))
  57. return 0;
  58. if(x[k-1]>0)
  59. nf=b[x[k-1]];
  60. else nf=a[x[k-1]];
  61. if(nf==a[x[k]])
  62. return 1;
  63. else if(nf==b[x[k]])
  64. return -1;
  65. else return 0;
  66. }
  67. void afisare()
  68. {
  69. int i;
  70. cout<<a[x[1]]<<" ";
  71. for(i=1;i<=m;i++)
  72. if(x[i]>0)
  73. cout<<b[x[i]]<<" ";
  74. else cout<<a[x[i]]<<" ";
  75. }
  76. void back()
  77. {
  78. int ok,k,i;
  79. k=2;
  80. x[1]=1;
  81. while(k>1)
  82. {
  83. ok=0;
  84. while(ok==0&&abs(x[k])<m)
  85. {
  86. x[k]=abs(x[k])+1;
  87. ok=cond(k);
  88. if(ok==-1)
  89. x[k]=-x[k];}
  90. if(ok==0)x[k]--;
  91. else if(sol(k)==1)
  92. afisare();
  93. else{k++;
  94. x[k]=1;
  95. }
  96. }
  97. }
  98. int main()
  99. {
  100. citire();
  101. if(conex()==1&&pare()==1)
  102. back();
  103. else cout<<"graful nu este eulerian";
  104.  
  105.  
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement