Sunteți pe pagina 1din 5

Tema Grafuri

-conexitate-

1. Se dau k noduri. Să se verifice dacă formează un lanț. Apoi să


se verifice dacă este elementar.
#include <iostream>
using namespace std;
int k, a[100][100];
void citire ()
{ int i,j;
cin>>k;
for( i=1; i<=k-1;i++)
for(j=i+1;j<=k;j++)
{cin>>a[i][j];
a[j][i]=a[i][j];}
void lant (int x)
{int i,ok=1;
   viz[x]=1;
   for(i=1;i<=k;i++)
        if (a[x][i]==1 &&viz[i]==0)
DFS(i);
else ok=0;
}

void retine_lant (int x)


{int i, r[100], n=0;
   viz[x]=1;
   for(i=1;i<=k;i++)
        if (a[x][i]==1 &&viz[i]==0)
{ DFS(i);
n++;}
}

void lant_elementar()
{int i,j,okl=1;
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(r[i]==r[j])
okl=0;
if(ok==1)
cout<<”Este lanț elementar”;
else
cout<<”Nu este lanț elementar”;
}
int main ()
{int x;
Cin>>x;
citire ();
void lant(x);
if(ok==1);
cout<<”Este lant”;
else
cout<<”Nu este lant”;
void retine_lant ();
void lant_elementar();
return 0;

2. Se dă un graf. Să se verifice dacă este conex.


#include <iostream>
using namespace std;

int n,m,a[101][101],viz[101];
void citire ()
{ int i,j;
cin>>n;
for( i=1; i<=n-1;i++)
for(j=i+1;j<=n;j++)
{cin>>a[i][j];
a[j][i]=a[i][j];}

void DFS(int x)
{ int i;
  viz[x]=1;
  for(i=1;i<=n;i++)
    if (a[x][i]==1 && viz[i]==0) DFS(i);  
}

int Conex()
{ int i;
  DFS(1);
  for(i=1;i<=n;i++)
      if (viz[i]==0) return 0;
  return 1;
}
int main()
{ int x;
cin>>x;
if(conex==1)
cout<<”Graful este conex”;
else
cout<<”Graful nu este conex”;
return 0;
3. Se dă un graf. Să se afișeze componentele conexe dacă graful
nu este conex.
#include <iostream>
using namespace std;

int n,m,a[100][100],viz[100],nrcomp;
void citire ()
{ int i,j;
cin>>n;
for( i=1; i<=n-1;i++)
for(j=i+1;j<=n;j++)
{cin>>a[i][j];
a[j][i]=a[i][j];}

void DFS(int x)
{ int i;
viz[x]=nrcomp;
for(i=1;i<=n;i++)
if (a[x][i]==1 && viz[i]==0) DFS(i);

}
int conex()
{ int i;
DFS(1);
for(i=1;i<=n;i++)
if (viz[i]==0) return 0;
return 1;
}

void conex_componente ()
{ int i;
for(i=1;i<=n;i++)
if (viz[i]==0) { nrcomp++; DFS(i);}
}

void afisare_conexe()
{ int i,j;
for(i=1;i<=nrcomp;i++)
{ fout<<"Componenta "<<i<<": ";
for(j=1;j<=n;j++)
if (viz[j]==i) fout<<j<<" ";
fout<<endl;
}

}
int main()
{ int x;
cin>>x;
if(conex==1)
{conex_componente ();
afisare_conexe();}

return 0;}

S-ar putea să vă placă și