比赛 期末考试2 评测结果 AATTTTTTTTTTTTTTTTTTTETET
题目名称 数好图 最终得分 8
用户昵称 rzzakioi 运行时间 24.291 s
代码语言 C++ 内存使用 21.83 MiB
提交时间 2026-02-10 11:15:38
显示代码纯文本
#include<cstdio>
#include<queue>
#include<cstring>
#define int long long
using namespace std;
int n,ans[305],vis1[10],vis2[10];
bool vis[305][305];
const int mod=1e9+7;
void dfs(int x,int y){
    if(x>n){
        memset(vis1,0,sizeof(vis1));
        memset(vis2,0,sizeof(vis2));
        queue<int>q;
        q.push(1);
        vis1[1]=1;
        while(!q.empty()){
            int u=q.front();
            q.pop();
            for(int i=u+1;i<=n;i++){
                if(vis[u][i]){
                    q.push(i);
                    vis1[i]=1;
                }
            }
        }
        q.push(n);
        vis2[n]=1;
        while(!q.empty()){
            int u=q.front();
            q.pop();
            for(int i=1;i<u;i++){
                if(vis[i][u]){
                    q.push(i);
                    vis2[i]=1;
                }
            }
        }
        int num=0;
        for(int i=1;i<=n;i++){
            if(vis1[i]&&vis2[i])num++;
        }
        ans[num]++;
        ans[num]%=mod;
        return;
    }
    if(y>n){
        dfs(x+1,x+2);
        return;
    }
    for(int i=0;i<=1;i++){
        vis[x][y]=i;
        dfs(x,y+1);
    }
}
signed main(){
    freopen("graph.in","r",stdin);
    freopen("graph.out","w",stdout);
    scanf("%lld",&n);
    dfs(1,2);
    for(int i=0;i<=n;i++)printf("%lld ",ans[i]);
    return 0;
}