| 比赛 |
期末考试2 |
评测结果 |
ATTTTTTTTT |
| 题目名称 |
数图 |
最终得分 |
10 |
| 用户昵称 |
ychyyx |
运行时间 |
45.904 s |
| 代码语言 |
C++ |
内存使用 |
3.45 MiB |
| 提交时间 |
2026-02-10 12:10:04 |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n;
long long ans;
int a[1000005][2];
int ind[1000005];
int f[15]={0,0,1,1,9,216,7570,357435,22040361,721632017,261965794};
void dfs(int k,int d){
if(k==n+1&&d==0){
for(int i=1;i<=n;i++){
ind[i]=0;
}
for(int i=1;i<=n;i++){
ind[a[i][0]]++;
ind[a[i][1]]++;
}
bool flag=true;
for(int i=1;i<=n;i++){
if(ind[i]!=2){
flag=false;
break;
}
}
if(flag==true){
ans++;
}
return ;
}
int w=0;
if(d==1) w=a[k][d-1];
for(int i=w+1;i<=n;i++){
if(i==k) continue;
a[k][d]=i;
dfs(k+d,(d+1)%2);
}
}
int main(){
freopen("grafy.in","r",stdin);
freopen("grafy.out","w",stdout);
scanf("%d",&n);
if(n<=10) cout<<f[n];
else{
dfs(1,0);
printf("%lld",ans);
}
return 0;
}