AcWing 1491. 圆桌座位
原题链接
简单
作者:
编号002
,
2024-04-16 16:19:07
,
所有人可见
,
阅读 2
#include<iostream>
using namespace std;
const int N=11;
int ship[N][N];
int path[N];
int n,m,cnt;
bool state[N];
bool flag=0;
void dfs(int u)
{
if(u==n)
{
path[u]=1;
for(int i=0;i<n;i++)
if(ship[path[i+1]][path[i]]||ship[path[i]][path[i+1]])return;
cnt++;
return;
}
for(int i=2;i<=n;i++)
{
if(!state[i])
{
state[i]=1;
path[u]=i;
dfs(u+1);
state[i]=0;
}
}
}
int main()
{
cin>>n>>m;
int x,y;
while(m--)
{
cin>>x>>y;
ship[x][y]=ship[y][x]=1;
}
path[0]=1;
dfs(1);
cout<<cnt<<endl;
return 0;
}