#include<fstream.h>

#include<conio.h>

int a[20][20],gasit;

int viz[20];

int n,m;

 

 

void citire()

{ int x,y;

fstream f; //memorare graf in matrice de adiacenta

f.open("graf1.txt",ios::in);

if(f)

   cout<<"ok";

else

   cout<<"eroare";

f>>n>>m;

for(int i=1;i<=m;i++)

    {f>>x>>y;

    a[x][y]=a[y][x]=1;

    }

}

 

void df(int nod)

{viz[nod]=1;

for(int k=1;k<=n;k++)

    if(a[nod][k]==1)

            {a[nod][k]=a[k][nod]=0;

            if(viz[k]==1)

                  gasit=1;

             else

                 df(k);

             }

 

}

 

void main()

{clrscr();

citire();

df(1);

int ok=1;

for(int i=1;i<=n;i++)

   if(viz[i]==0)

       ok=0;

if(ok==0)

    cout<<"graful nu este conex";

  if(gasit==1)

     cout<<"graful are cicluri";

 if(gasit==0&&ok==1)

     cout<<"graful este conex si fara cicluri , deci este arbore";

 getch();

 

  }