Advertisement
Maria_Teodora

Bipartit1

Dec 9th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.94 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4.  
  5. ifstream f ("bipartit1.in");
  6. ofstream g ("bipartit1.out");
  7.  
  8. int n,m, w[20][20],a[20],st[20],v[20];
  9.  
  10. void citire()
  11. {
  12.     f>>n>>m;
  13.     int x,y;
  14.     for(int i=1;i<=m;i++)
  15.     {
  16.         f>>x>>y;
  17.         w[x][y]=w[y][x]=1;
  18.     }
  19. }
  20.  
  21. bool valid (int k)
  22. {
  23.     if(st[k]<=st[k-1])
  24.         return 0;
  25.     return 1;
  26. }
  27.  
  28. bool partitie(int k)
  29. {
  30.     int s=1;
  31.     for(int i=1;i<=n;i++)
  32.         if(st[s]==i)
  33.             v[i]=1,s++;
  34.         else
  35.             v[i]=2;
  36.     for(int i=1;i<=n;i++)
  37.         for(int j=1;j<=n;j++)
  38.         {
  39.             if(v[i]==v[j] && w[i][j]==1)
  40.                 return 0;
  41.         }
  42.     return 1;
  43. }
  44.  
  45. void genpar(int k)
  46. {
  47.     for(int i=1;i<=n;i++)
  48.     {
  49.         st[k]=i;
  50.         if(valid(k))
  51.         {
  52.             if(k<=n/2)
  53.             {
  54.                 if(k==n/2)
  55.                 {if(partitie(k))
  56.                     {
  57.                     g<<"DA"<<endl;
  58.                        if(v[1]==1)
  59.                        {
  60.                            for(int i=1;i<=k;i++)
  61.                                 if(v[i]==1)
  62.                                     g<<i<<" ";
  63.                                 g<<endl;
  64.                             for(int i=1;i<=k;i++)
  65.                                 if(v[i]==2)
  66.                                     g<<i<<" ";
  67.                        }
  68.                        else
  69.                        {
  70.                             for(int i=1;i<=k;i++)
  71.                                 if(v[i]==2)
  72.                                     g<<i<<" ";
  73.                             g<<endl;
  74.                             for(int i=1;i<=k;i++)
  75.                                 if(v[i]==1)
  76.                                     g<<i<<" ";
  77.                        }
  78.                     }
  79.                 }
  80.                 else
  81.                     genpar(k+1);
  82.             }
  83.         }
  84.     }
  85. }
  86.  
  87. int main()
  88. {
  89.     citire();
  90.     genpar(1);
  91.  
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement