Language: C

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

/* define */
#define Yes(X) puts ( X ? "Yes" : "No")
#define YES(X) puts ( X ? "YES" : "NO")
#define FOR(i, a, b) for ( i = a; i < b ; i++)
#define REP(i, n) for ( i = 0; i < n ; i++)
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max3(a, b, c) ((max((a), (b)) > (c)) ? max((a), (b)) : (c))
#define min3(a, b, c) ((min((a), (b)) < (c)) ? min((a), (b)) : (c))

/* const */
const int MOD = (int)1e9 + 7;

/* alias */
typedef long long ll;

/* function */
int cmp(const void *a, const void *b) {
	return *(int*)a - *(int*)b;
}
int cmp2(const void *a, const void *b) {
	return *(int*)b - *(int*)a;
}

/* main */
int i, j, k;

const int nmax = 8;
int n, m, a, b, x = 0;
bool ver[nmax][nmax] = { false }, visited[nmax] = { true };


int visit(int x, bool visited[nmax]) {
	bool all_visited = true;
	REP(i, n) if (visited[i] == false) all_visited = false;
	if (all_visited) {
		printf("\n");
		return 1;
	}
	int c = 0;
	REP(i, n) {
		if (visited[i] == false && ver[x][i] == true) {
			visited[i] = true;
			printf("%d", x);
			c += visit(i, visited);
			visited[i] = false;
		}
	}
	return c;
}

int main() {
	scanf("%d%d", &n, &m);
	REP(i, m) {
		scanf("%d%d", &a, &b);
		ver[a - 1][b - 1] = true;
		ver[b - 1][a - 1] = true;
	}
	printf("%d\n", visit(x, visited));
	return 0;
}

Compiler output:
main.c:37:1: error: unknown type name 'bool'
   37 | bool ver[nmax][nmax] = { false }, visited[nmax] = { true };
      | ^~~~
main.c:7:1: note: 'bool' is defined in header '<stdbool.h>'; this is probably fixable by adding '#include <stdbool.h>'
    6 | #include <math.h>
  +++ |+#include <stdbool.h>
    7 | 
main.c:37:6: error: variably modified 'ver' at file scope
   37 | bool ver[nmax][nmax] = { false }, visited[nmax] = { true };
      |      ^~~
main.c:37:6: error: variably modified 'ver' at file scope
main.c:37:26: error: 'false' undeclared here (not in a function)
   37 | bool ver[nmax][nmax] = { false }, visited[nmax] = { true };
      |                          ^~~~~
main.c:37:26: note: 'false' is defined in header '<stdbool.h>'; this is probably fixable by adding '#include <stdbool.h>'
main.c:37:35: error: variably modified 'visited' at file scope
   37 | bool ver[nmax][nmax] = { false }, visited[nmax] = { true };
      |                                   ^~~~~~~
main.c:37:53: error: 'true' undeclared here (not in a function)
   37 | bool ver[nmax][nmax] = { false }, visited[nmax] = { true };
      |                                                     ^~~~
main.c:37:53: note: 'true' is defined in header '<stdbool.h>'; this is probably fixable by adding '#include <stdbool.h>'
main.c:40:18: error: unknown type name 'bool'
   40 | int visit(int x, bool visited[nmax]) {
      |                  ^~~~
main.c:40:18: note: 'bool' is defined in header '<stdbool.h>'; this is probably fixable by adding '#include <stdbool.h>'
main.c: In function 'main':
main.c:66:24: error: implicit declaration of function 'visit' [-Wimplicit-function-declaration]
   66 |         printf("%d\n", visit(x, visited));
      |                        ^~~~~