Advertisement
Five_NT

[C++]Generare lanturi elementare din graf intre vf p si q

Nov 28th, 2013
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1. #include <iostream.h>
  2. #include <fstream.h>
  3.  
  4. ifstream f("citire.in");
  5. int a[100][100], i, j, n, p, q, sol, x[100], k;
  6.  
  7. void citire()
  8. {
  9.     f>>n;
  10.     for(i=1; i<=n; i++)
  11.         for(j=1; j<=n; j++)
  12.             f>>a[i][j];
  13.     f>>p>>q;
  14. }
  15. int cont(int k)
  16. {
  17.     for(i=1; i<k; i++)
  18.         if(x[i]==x[k])
  19.             return 0;
  20.         if(k>1)
  21.             if(a[x[k]][x[k-1]]==0)
  22.                 return 0;
  23.     return 1;
  24. }
  25.  
  26. void afis(int k)
  27. {
  28.     for(i=1; i<=k; i++)
  29.         cout<<x[i]<<" ";
  30.     cout<<'\n';
  31.     sol++;
  32. }
  33.  
  34. void back()
  35. {
  36.     int k=0; x[k]=0;
  37.     do
  38.     {
  39.         while(x[k]<n)
  40.         {
  41.             x[k]++;
  42.             if(cont(k))
  43.                 if(x[k]==q)
  44.                     afis(k);
  45.             else
  46.                 {
  47.                     k++;
  48.                     x[k]=0;
  49.                 }
  50.         }
  51.         k--;
  52.     } while(k>1);
  53. }
  54.  
  55. int main()
  56. {
  57.     citire();
  58.     x[1]=p;
  59.     back();
  60.     cout<<"Avem "<<sol<<" solutii.";
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement