Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. ifstream f("bipartit1.in");
  6. ofstream g("bipartit1.out");
  7. int n,m,G[20][20],A[20],B[20],vizitat[20],coada[20],in=1,sf=1,nA=1,nB;
  8. void QuickSort2(int stanga,int dreapta)
  9. {
  10. if(stanga<dreapta)
  11. {
  12.  int i=stanga,j=dreapta,aux,d=0,m=(stanga+dreapta)/2;
  13.  aux=B[stanga];
  14.  B[stanga]=B[m];
  15.  B[m]=aux;
  16.  while(i<j)
  17.  {
  18.   if(B[i]>B[j])
  19.   {
  20.     aux=B[i];
  21.     B[i]=B[j];
  22.     B[j]=aux;
  23.     d=1-d;
  24.   }
  25.   i=i+d;
  26.   j=j-(1-d);
  27.  }
  28.  QuickSort2(stanga,i-1);
  29.  QuickSort2(i+1,dreapta);
  30. }
  31. }
  32. void QuickSort1(int stanga,int dreapta)
  33. {
  34. if(stanga<dreapta)
  35. {
  36.  int i=stanga,j=dreapta,aux,d=0,m=(stanga+dreapta)/2;
  37.  aux=A[stanga];
  38.  A[stanga]=A[m];
  39.  A[m]=aux;
  40.  while(i<j)
  41.  {
  42.   if(A[i]>A[j])
  43.   {
  44.     aux=A[i];
  45.     A[i]=A[j];
  46.     A[j]=aux;
  47.     d=1-d;
  48.   }
  49.   i=i+d;
  50.   j=j-(1-d);
  51.  }
  52.  QuickSort1(stanga,i-1);
  53.  QuickSort1(i+1,dreapta);
  54. }
  55. }
  56. int bipartit()
  57. {
  58.    for(int i=1;i<sf;i++)
  59.    {
  60.      for(int j=i+1;j<=sf;j++)
  61.      {
  62.          if(vizitat[i]==vizitat[j]&&G[i][j]==1)
  63.         return 0;
  64.      }
  65.    }
  66.    return 1;
  67. }
  68. void parcurgere()
  69. {
  70.   while(in<=sf)
  71.   {
  72.    int nod_curent=coada[in];
  73.    for(int j=1;j<=n;j++)
  74.    {
  75.      if(G[nod_curent][j]==1&&vizitat[j]==0)
  76.      {
  77.       sf++;
  78.       coada[sf]=j;
  79.       if(vizitat[nod_curent]==1)
  80.       {
  81.       vizitat[j]=-1;
  82.       nB++;
  83.       B[nB]=j;
  84.       }
  85.       else
  86.       {
  87.        vizitat[j]=1;
  88.        nA++;
  89.        A[nA]=j;
  90.       }
  91.      }
  92.    }
  93.    in++;
  94.   }
  95. }
  96. void citire()
  97. {
  98. f>>n>>m;
  99. while(m!=0)
  100. {
  101.   int i,j;
  102.   f>>i>>j;
  103.   G[i][j]=G[j][i]=1;
  104.   m--;
  105. }
  106. A[1]=1;
  107. coada[in]=1;
  108. vizitat[1]=1;
  109. }
  110. int main()
  111. {
  112.     citire();
  113.     parcurgere();
  114.     if(bipartit())
  115.     {
  116.      QuickSort1(1,nA);
  117.      QuickSort2(1,nB);
  118.       g<<"DA\n";
  119.       for(int i=1;i<=nA;i++)
  120.       {
  121.         g<<A[i]<<" ";
  122.       }
  123.       g<<"\n";
  124.       for(int i=1;i<=nB;i++)
  125.       {
  126.         g<<B[i]<<" ";
  127.       }
  128.     }
  129.     else
  130.     g<<"NU";
  131.     return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement