Advertisement
andreisophie

Tema 7 feb 2020

Feb 6th, 2020
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.24 KB | None | 0 0
  1. ---------------------------------------Turneu----------------------------
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. bool a[105][105],viz[105],gasit;
  7. int n,st[105];
  8.  
  9. void citire()
  10. {
  11.     int m,x,y;
  12.     cin>>n;
  13.     m=n*(n-1)/2;
  14.     for (int i=1;i<=m;i++)
  15.     {
  16.         cin>>x>>y;
  17.         a[x][y]=1;
  18.     }
  19. }
  20.  
  21. void afisare()
  22. {
  23.     for (int i=1;i<=n;i++)
  24.         cout<<st[i]<<' ';
  25.     gasit=true;
  26. }
  27.  
  28. void bck(int k)
  29. {
  30.     for (int i=1;i<=n && !gasit;i++)
  31.     {
  32.         st[k]=i;
  33.         if (a[st[k-1]][i] && !viz[i] || k==1)
  34.             if (k==n)
  35.                 afisare();
  36.             else
  37.             {
  38.                 viz[i]=1;
  39.                 bck(k+1);
  40.                 viz[i]=0;
  41.             }
  42.     }
  43. }
  44.  
  45. int main()
  46. {
  47.     citire();
  48.     bck(1);
  49.     return 0;
  50. }
  51.  
  52. -----------------------------------------Drumuri-----------------------------------------
  53. #include <iostream>
  54.  
  55. using namespace std;
  56.  
  57. int n,viz[105],p;
  58. bool a[105][105];
  59.  
  60. void citire()
  61. {
  62.     int m,x,y;
  63.     cin>>n>>p>>m;
  64.     for (int i=1;i<=m;i++)
  65.     {
  66.         cin>>x>>y;
  67.         a[x][y]=1;
  68.     }
  69.  
  70. }
  71.  
  72. void DFS(int p, int k)
  73. {
  74.     viz[p]=k;
  75.     for (int i=1;i<=n;i++)
  76.         if (a[p][i] && (!viz[i] || viz[i]>k))
  77.             DFS(i,k+1);
  78. }
  79.  
  80. void afisare()
  81. {
  82.     int v[105],k=0;
  83.     for (int i=1;i<=n;i++)
  84.         if (viz[i]%2==0 && viz[i]>2)
  85.             v[++k]=i;
  86.     cout<<k<<'\n';
  87.     for (int i=1;i<=k;i++)
  88.         cout<<v[i]<<' ';
  89. }
  90.  
  91. int main()
  92. {
  93.     citire();
  94.     DFS(p,2);
  95.     afisare();
  96.     return 0;
  97. }
  98.  
  99. -------------------------------------------Anunt--------------------------------------------
  100. #include <iostream>
  101. #include <cstring>
  102.  
  103. using namespace std;
  104.  
  105. bool a[105][105],viz[105];
  106. int n;
  107.  
  108. void citire()
  109. {
  110.     int m,x,y;
  111.     cin>>n>>m;
  112.     for (int i=1;i<=m;i++)
  113.     {
  114.         cin>>x>>y;
  115.         a[x][y]=1;
  116.     }
  117. }
  118.  
  119. void Fill(int x)
  120. {
  121.     viz[x]=1;
  122.     for (int i=1;i<=n;i++)
  123.         if (a[x][i] && !viz[i])
  124.             Fill(i);
  125. }
  126.  
  127. bool verif()
  128. {
  129.     for (int i=1;i<=n;i++)
  130.         if (!viz[i])
  131.             return false;
  132.     return true;
  133. }
  134.  
  135. void rezolvare()
  136. {
  137.     for (int i=1;i<=n;i++)
  138.     {
  139.         Fill(i);
  140.         if (verif())
  141.             cout<<i<<' ';
  142.         memset(viz,0,105);
  143.     }
  144. }
  145.  
  146. int main()
  147. {
  148.     citire();
  149.     rezolvare();
  150.     return 0;
  151. }
  152.  
  153. --------------------------------Drum Hamiltonian--------------------------------------------------
  154. #include <fstream>
  155.  
  156. using namespace std;
  157.  
  158. ifstream f("drum_hamiltonian.in");
  159. ofstream g("drum_hamiltonian.out");
  160.  
  161. int n,st[15];
  162. bool a[15][15],gasit;
  163.  
  164. void citire()
  165. {
  166.     int x,y;
  167.     f>>n;
  168.     while(f>>x>>y)
  169.         a[x][y]=1;
  170. }
  171.  
  172. bool diferit(int k)
  173. {
  174.     for (int i=1;i<k;i++)
  175.         if (st[i]==st[k])
  176.             return false;
  177.     return true;
  178. }
  179.  
  180. void afisare()
  181. {
  182.     gasit=true;
  183.     g<<1<<'\n';
  184.     for (int i=1;i<=n;i++)
  185.         g<<st[i]<<' ';
  186. }
  187.  
  188. void bck(int k)
  189. {
  190.     for (int i=1;i<=n && !gasit;i++)
  191.     {
  192.         st[k]=i;
  193.         if ((k==1 || a[st[k-1]][i]) && diferit(k))
  194.         {
  195.             if (k==n)
  196.                 afisare();
  197.             else
  198.                 bck(k+1);
  199.         }
  200.     }
  201. }
  202.  
  203. int main()
  204. {
  205.     citire();
  206.     bck(1);
  207.     if (!gasit)
  208.         g<<'0';
  209.     return 0;
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement