(Python)
# Using graphillion
from graphillion import GraphSet
def make_CnXCk(n, k):
grids = []
for i in range(1, k + 1):
for j in range(1, n):
grids.append((i + (j - 1) * k, i + j * k))
grids.append((i + (n - 1) * k, i))
for i in range(1, k * n, k):
for j in range(1, k):
grids.append((i + j - 1, i + j))
grids.append((i + k - 1, i))
return grids
if n == 1: return 4
if n == 2: return 2304
universe = make_CnXCk(4, n)
GraphSet.set_universe(universe)
spanning_trees = GraphSet.trees(is_spanning=True)
return spanning_trees.len()