代码如下:
#include<iostream>
using namespace std;
int total=0;
int a[7][7]={0};
int b[7]={0,4,5,6,1,2,3};
void dfs(int top,int n);
int main()
{
int m;
int n;
cin>>m>>n;
int p=0;
int q=0;
for(int i=0;i<n;i++)
{
cin>>p>>q;
a[p][q]=1;
a[q][p]=1;
}
for(int i=1;i<7;i++)
{
dfs(i,m-1);
}
cout<<int(total*pow(4,m))%int(pow(10,9)+7)<<endl;
return 0;
}
void dfs(int top,int n)
{
if(n==0)
{
total++;
return;
}
for(int i=1;i<7;i++)
{
if(a[top][i]==0)
{
dfs(b[i],n-1);
}
}
}