记录编号 575834 评测结果 AAAAAAAAAAA
题目名称 中心台站建设 最终得分 100
用户昵称 GravatarHeSn 是否通过 通过
代码语言 C++ 运行时间 0.017 s
提交时间 2022-09-28 20:43:10 内存使用 2.59 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, g[110][110], ans, f[110], vis[110], cs[10010][110], csn[110], a[110], cnt;
void dfs(int x, int c) {
	if(c > ans) {
		return ;
	}
	csn[c] = x;
	for(int i = 1; i <= n; i ++) {
		f[i] += g[x][i];
	}
	bool flg = 1, sc[110] = {0};
	for(int i = 1; i <= n; i ++) {
		if(!f[i]) {
			flg = 0;
			for(int j = x + 1; j <= n && !sc[j]; j ++) {
                if(g[j][i] == 1) {
                    sc[j] = true;
                    dfs(j, c + 1);
                } 
            }
		}
	}
	if(flg) {
        if(c < ans) {
            cnt = 1;
            ans = c;
        }
        else {
        	++ cnt;
		}
        for(int i = 1; i <= c; i ++) {
            cs[cnt][i] = csn[i];
        }
    }
    for(int i = 1; i <= n; i ++) {
        if(g[x][i] == 1) {
        	-- f[i];
		}
    }
}
signed 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 ++) {
			cin >> g[i][j];
		}
		g[i][i] = 1;
	}
	ans = 1000001;
	for(int i = 1; i <= n; i ++) {
		memset(vis, 0, sizeof(vis));
		for(int j = 1; j <= n; j ++) {
			vis[j] = g[i][j];
		}
		dfs(i, 1);
	}
	cout << ans << endl;
	cout << cnt << endl;
	for(int i = 1; i <= cnt; i ++) {
		for(int j = 1; j <= ans; j ++) {
			cout << cs[i][j] << ' ';
		}
		cout << endl;
	}
    return 0;
}