Advertisement
Guest User

Untitled

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