比赛 EYOI与SBOI开学欢乐赛7th 评测结果 AAAWWTTTAAT
题目名称 中心台站建设 最终得分 45
用户昵称 该账号已注销 运行时间 4.000 s
代码语言 C++ 内存使用 4.21 MiB
提交时间 2022-09-23 20:17:42
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct edge{
    int t,n;
}e[100100];
int sg[110][110][110]={0};
int n,hd[110],cnt=0,ans=0x3f3f3f3f;
int p[110]={0},tmp[110]={0};
int v[110]={0};
void add(int x,int y){
    e[++cnt].t=y;
    e[cnt].n=hd[x];
    hd[x]=cnt;
}
int dfs(int x,int u){
    bool ed=0;
    if(u>ans)return 0;
    for(int i=1;i<=n;i++){
        if(v[i]==0){
            ed=1;break;
        }
    }
    if(ed==0){
        if(u<=ans){
            ans=u;
            tmp[ans]++;
            for(int i=1;i<=ans;i++){
                if(p[i]<p[i-1]){
                    tmp[ans]--;
                    break;
                }
                sg[ans][tmp[ans]][i]=p[i];
            }
        }
    }
    if(ed!=0)
    for(int i=x+1;i<=n;i++){
        if(v[i]==0){
            for(int j=hd[i];j;j=e[j].n){
            int ver=e[j].t;
            v[ver]++;
            }
            u++;
            v[i]++;p[u]=i;
            dfs(i,u);
            v[i]--;u--;
            for(int j=hd[i];j;j=e[j].n){
            int ver=e[j].t;
            v[ver]--;
            }
        }
    }
    
    return 0;
}
int main(){
    freopen("zpj.in","r",stdin);
    freopen("zpj.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            int x;
            cin>>x;
            if(x==1)add(i,j);
        }
    }
    dfs(0,0);
    cout<<ans<<endl;
    cout<<tmp[ans]<<endl;
    for(int i=1;i<=tmp[ans];i++){
        for(int j=1;j<=ans;j++){
            cout<<sg[ans][i][j]<<' ';
        }
        cout<<endl;
    }
    return 0;
}