|
|
вернуться в форумNo subject # include <stdio.h> # include <conio.h> # include <math.h> # include <stdlib.h> # include <time.h> # include <limits.h> int count = 0; int A[100][100] , M , N , gidildi[100] = {0}; grafoku() { int i , j , k; scanf("%i %i",&N,&M); for( i = 0 ; i < N ; ++i ) for( k = 0 ; k < N ; ++k ) A[i][k] = 0;
for( k = 0 ; k < M ; ++k ){ scanf("%d %d",&i , &j); A[i - 1][j - 1] = 1; A[j - 1][i - 1] = 1; }
return 0; } DFS( unsigned int dugum ) { int gidildi[100] = {0}; unsigned i;
gidildi[dugum] = 1; for( i = 0 ; i < N ; ++i ) if( A[dugum][i] != 0 && gidildi[i] == 0 ) DFS(i); } int kontrol(int dugum , int i) { A[dugum][i] = 0; A[i][dugum] = 0; DFS(i); for( i = 0 ; i < N ; ++i ) gidildi[i] = 0; if( count == N ){ count = 0; return 1; } count = 0; return 0; } main() { int i , j = 1 , toplam = 0 , tek = 0 , euler_yolu[100] = {0} , dugum , sinir;
grafoku();
/*Euler yolu var mı?*/
for( i = 0 ; i < N ; ++i ){ for( j = 0 ; j < N ; ++j ) toplam += A[i][j]; if( toplam % 2 == 1 ) tek++; toplam = 0; }
if( !( tek == 2 || tek == 0 ) ) return;
/*Euler yolu var mı?(bitti)*/
dugum = 0; for( i = 0 ; i < N ; ++i ) if( A[dugum][i] == 1 ) if( kontrol(dugum , i) ){ euler_yolu[j] = i; dugum = i; j++; i = 0; } else{ A[dugum][i] = 1; A[i][dugum] = 1; } /*yazdırılıyor.*/
for( i = 0 ; i <= M ; ++i ) printf("%i ",euler_yolu[i]);
system("pause"); }
|
|
|