Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
01.05.2014
Размер:
2.47 Кб
Скачать

#include  <stdio.h>

#include  <conio.h>

#include  <stdlib.h>

#include  <string.h>

#include  <iostream.h>


int k,p=0;

int cycle(int **m,int n, int *m2,int *m_ver,int first,int t);

int obrabotka(int L1,int **m1,int n,int *m_v,int first,int t,int i);

void vivod(int **m1,int n);
void free(int **R, int n);



void main(void)

{

int t=0,*m_versh,*m_obrabotannie,i,j,size,**array, first_1,*mtmp,sch=0;


m_versh=new int[size];

m_obrabotannie=new int[size];

mtmp=new int[size];
    
cout << "Enter razmernost grapha: ";
    
cin >> size;
	
array = new int*[size];
	
for ( i = 0; i < size; i++ )
       
  {
array[i] = new int[size];
  }
	
for ( i = 0; i < size; i ++ )
      
{ 
cout << "Enter " << (i + 1) << " stroku: ";
		  
for ( j = 0; j < size; j ++ )
          
  { 
cin >> array[i][j]; 
  }
	   
}
 
{
  
int m=0,np=0;
  
for(i=0;i<size;i++)
    
for(j=0;j<size;j++)
      
 {
      
if(array[i][j] == 1)
       
  {
       
first_1=i;
       
for(int q=0;q<size;q++)
        
if(array[j][q]==1)
        
   {
        
mtmp[t]=q;
        
t++;
        
   }
       
 p=cycle(array,size,mtmp,m_versh,first_1,t);
       
  }
      
 }

cout<<endl<<p<<endl;

vivod(array, size);

cout<<endl<<"---------"<<endl;

free(array,size);

getch();

}

}




int cycle(int **m,int n, int *m2,int *m_ver,int first,int t)

{

int L,count=0,i=0;

for(int s=0;s<t;s++)
 
  {
 
L=m2[s];
 
count+=obrabotka(L,m,n,m_ver,first,t,i);
 
  }

return(count);

}



int obrabotka(int L1,int **m1,int n,int *m_v,int first,int t,int i)

{

int u=0,buf=0;
k=0;

while(k!=1)

 {
  
for(int j=0;j<n;j++)
   
  {
   
if(j==0 && u==0)
    
   {
m_v[i]=L1;
      
u=1;
      
i++;
    
   }

   
if(m1[L1][j] == 1)
    
   {
     
buf=j;
      
for(int l=0;l<(i-1);l++)
       
if( j==m_v[l] )
       
{k=1;
       
p=0;
        
return(p);
       
   }
       
if(j==first)
       
   {
p=1;
       
k=1;
       
return(p);
       
   }
       
else
       
   {
       
cout<<"Error - No end"<<endl;
       
getch();
       
exit(0);
       
   }

     
j=buf;

     
p=1;
     
k=1;
     
obrabotka(j,m1,n,m_v,first,t,i);
     
  }
   
 }

}


return p;

}



void free(int **R, int n)

{

for(int e=0;e<n;e++)
 
free(*(R+e));

free(R);

}

void vivod(int **m1,int n)

{

for(int k=0;k<n;k++)
 
{
for(int l=0;l<n;l++)
  
cout<<m1[k][l];
 
cout<<endl;
}

}
Соседние файлы в папке графы
  • #
    01.05.20142.47 Кб13tmp.cpp
  • #
    01.05.2014109.99 Кб11tmp.obj
  • #
    01.05.20142.3 Кб12tmp1.cpp
  • #
    01.05.2014110.12 Кб11tmp1.obj
  • #
    01.05.20142.29 Кб11tmp1.~cpp