Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая по СИАОДУ / графы / tmp
.cpp
#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;
}
}