比赛 期末考试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;
}