记录编号 575847 评测结果 AAAAAAAAAAA
题目名称 中心台站建设 最终得分 100
用户昵称 Gravatar00000 是否通过 通过
代码语言 C++ 运行时间 0.011 s
提交时间 2022-09-28 22:04:18 内存使用 1.27 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,g[200][200];
int m[200],cnt=1,l=0x3f3f3f3f;
int ans[200][200],p[200];
void dfs(int x,int y)//所在城市,已建数量 
{
	if(y>l) return;
	p[y]=x;
	for(int q=1;q<=n;q++)
	{
		if(g[x][q]) m[q]++;
	}
	int flag=1;
//	cout<<x<<" "<<y<<endl;
//	for(int q=1;q<=n;q++)
//	{
//		cout<<m[q]<<" ";
//	}
//	cout<<endl;
	bool s[200]={0};
	for(int q=1;q<=n;q++)
	{
		if(!m[q])
		{
			flag=0;
			for(int w=x+1;w<=n&&!s[w];w++)
			{
				if(g[w][q])
				{
					s[w]=1;
					dfs(w,y+1);
				}
			}
			
		}
	}
//	if(x==3&&y==2) cout<<flag<<endl; 
	if(flag)
	{
		
		if(y<l)
		{
			l=y;
			cnt=0;
		}
			cnt++;
			for(int q=1;q<=y;q++)
			{
				ans[cnt][q]=p[q];
			}
	}
	for(int q=1;q<=n;q++)
	{
		if(g[x][q]) m[q]--;
	}
}
int main(){
	freopen("zpj.in","r",stdin);
	freopen("zpj.out","w",stdout);
cin>>n;
for(int q=1;q<=n;q++)
{
	for(int w=1;w<=n;w++)
	{
		cin>>g[q][w];
		if(q==w) g[q][w]=1;
	}
}
for(int q=1;q<=n;q++)
dfs(q,1);
cout<<l<<endl<<cnt<<endl;
for(int q=1;q<=cnt;q++)
{
	for(int w=1;w<=l;w++) cout<<ans[q][w]<<" ";
	cout<<endl;
}
return 0;
}