比赛 |
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;
}