You are on page 1of 3

#include <stdio.

h>

#define MAX 10

Typedef struct STACK {

Int array[100];

Int size;

} STACK;

Typedef struct GRAPH {

Int n;

Int a[MAX][MAX];

} DOTHI;

Void khoitaoStack(STACK *stack) {

Stack->size = 0;

Void DayGiaTriVaoStack(STACK *stack, int value) {

If (stack->size + 1 < 100) {

Stack->array[stack->size++] = value;

Void TimDuongDi(DOTHI *g, STACK *stack, int i) {

For (int j = 0; j < g->n; j++) {

If (g->a[i][j] != 0) {

g->a[i][j] = g->a[j][i] = 0;

TimDuongDi(g, stack, j);

}
DayGiaTriVaoStack(stack, i);

Int KiemTraChuTrinhEuler(DOTHI g) {

Int x = 0;

For (int i = 0; i < g.n; i++) {

Int bac = 0;

For (int j = 0; j < g.n; j++) {

Bac += g.a[i][j];

If (bac % 2) {

Return 0;

If (bac > 0) {

X = i;

DOTHI temp = g;

STACK stack;

khoitaoStack(&stack);

TimDuongDi(&temp, &stack, x);

For (int i = 0; i < temp.n; i++) {

For (int j = 0; j < temp.n; j++) {

If (temp.a[i][j] != 0) {

Return 0;

}
If (stack.array[stack.size – 1] != stack.array[0]) {

Return 0;

Printf(“\nChu trinh Euler: “);

For (int i = stack.size – 1; i >= 0; i--) {

Printf(“%d “, stack.array[i] + 1);

Return 1;

Int main() {

DOTHI g;

// Gán giá trị đồ thị vào g.a ở đây...

Printf(“Do thi:\n”);

XuatMaTranKe(g);

Printf(“\nKet qua kiem tra Chu trinh Euler:\n”);

If (!KiemTraChuTrinhEuler(g)) {

Printf(“Khong co chu trinh Euler trong do thi.\n”);

Return 0;

You might also like