Description:
Accept:
#include<bits/stdc++.h>
using namespace std;
int a[15][15], n,m,q,vis[15][15], ans = 0;
void dfs(int now) {
if (now == n + 1) {
ans++;
return;
}
int flag = 0;
for (int i = 1; i <= n; i++) {
if (!vis[now][i]) {
flag = 1;
}
}
if (flag == 0) {
return;
}
for (int i = 1; i <= m; i++) {
if (vis[now][i]) {
continue;
}
vis[now][i] = 1;
for (int j = 1; j <= n; j++) {
if (a[now][j]) {
vis[j][i]++;
}
}
dfs(now + 1);
vis[now][i] = 0;
for (int j = 1; j <= n; j++) {
if (a[now][j]) {
vis[j][i]--;
}
}
}
}
int main()
{
cin >> n >> m >> q;
memset(vis, 0, sizeof(vis));
memset(a, 0, sizeof(a));
for (int i = 0; i < q; i++) {
int s, e;
cin >> s >> e;
a[s][e] = 1;
a[e][s] = 1;
}
dfs(1);
cout << ans << endl;
return 0;
}