Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream f("bipartit1.in");
- ofstream g("bipartit1.out");
- int n,m,G[20][20],A[20],B[20],vizitat[20],coada[20],in=1,sf=1,nA=1,nB;
- void QuickSort2(int stanga,int dreapta)
- {
- if(stanga<dreapta)
- {
- int i=stanga,j=dreapta,aux,d=0,m=(stanga+dreapta)/2;
- aux=B[stanga];
- B[stanga]=B[m];
- B[m]=aux;
- while(i<j)
- {
- if(B[i]>B[j])
- {
- aux=B[i];
- B[i]=B[j];
- B[j]=aux;
- d=1-d;
- }
- i=i+d;
- j=j-(1-d);
- }
- QuickSort2(stanga,i-1);
- QuickSort2(i+1,dreapta);
- }
- }
- void QuickSort1(int stanga,int dreapta)
- {
- if(stanga<dreapta)
- {
- int i=stanga,j=dreapta,aux,d=0,m=(stanga+dreapta)/2;
- aux=A[stanga];
- A[stanga]=A[m];
- A[m]=aux;
- while(i<j)
- {
- if(A[i]>A[j])
- {
- aux=A[i];
- A[i]=A[j];
- A[j]=aux;
- d=1-d;
- }
- i=i+d;
- j=j-(1-d);
- }
- QuickSort1(stanga,i-1);
- QuickSort1(i+1,dreapta);
- }
- }
- int bipartit()
- {
- for(int i=1;i<sf;i++)
- {
- for(int j=i+1;j<=sf;j++)
- {
- if(vizitat[i]==vizitat[j]&&G[i][j]==1)
- return 0;
- }
- }
- return 1;
- }
- void parcurgere()
- {
- while(in<=sf)
- {
- int nod_curent=coada[in];
- for(int j=1;j<=n;j++)
- {
- if(G[nod_curent][j]==1&&vizitat[j]==0)
- {
- sf++;
- coada[sf]=j;
- if(vizitat[nod_curent]==1)
- {
- vizitat[j]=-1;
- nB++;
- B[nB]=j;
- }
- else
- {
- vizitat[j]=1;
- nA++;
- A[nA]=j;
- }
- }
- }
- in++;
- }
- }
- void citire()
- {
- f>>n>>m;
- while(m!=0)
- {
- int i,j;
- f>>i>>j;
- G[i][j]=G[j][i]=1;
- m--;
- }
- A[1]=1;
- coada[in]=1;
- vizitat[1]=1;
- }
- int main()
- {
- citire();
- parcurgere();
- if(bipartit())
- {
- QuickSort1(1,nA);
- QuickSort2(1,nB);
- g<<"DA\n";
- for(int i=1;i<=nA;i++)
- {
- g<<A[i]<<" ";
- }
- g<<"\n";
- for(int i=1;i<=nB;i++)
- {
- g<<B[i]<<" ";
- }
- }
- else
- g<<"NU";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement