| 比赛 |
期末考试2 |
评测结果 |
TAEWEEEEEEEEEEEEEEEEEEEEE |
| 题目名称 |
数好图 |
最终得分 |
4 |
| 用户昵称 |
2_16鸡扒拌面 |
运行时间 |
4.798 s |
| 代码语言 |
C++ |
内存使用 |
3.44 MiB |
| 提交时间 |
2026-02-10 10:50:37 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=10;
int n,ed[N][N],ans[N];
vector<pair<int,int> > e;
void df(int u,vector<vector<bool> >& g,vector<bool>& vis){
vis[u]=1;
for(int v=u+1;v<=n;v++)if(g[u][v]&&!vis[v])df(v,g,vis);
}
void db(int u,vector<vector<bool> >& g,vector<bool>& vis){
vis[u]=1;
for(int v=1;v<u;v++)if(g[v][u]&&!vis[v])db(v,g,vis);
}
void sol()
{
e.clear();
int m=0;
for(int u=1;u<=n;u++)for(int v=u+1;v<=n;v++)ed[u][v]=m++,e.push_back(make_pair(u,v));
for(int i=0;i<=n;i++)ans[i]=0;
int tot=1<<m;
for(int mk=0;mk<tot;mk++){
vector<vector<bool> > g(n+1,vector<bool>(n+1,0));
for(int i=0;i<m;i++)if(mk>>i&1){
int u=e[i].first,v=e[i].second;
g[u][v]=1;
}
vector<bool> f1(n+1,0),tn(n+1,0);
df(1,g,f1);
db(n,g,tn);
int k=0;
for(int i=1;i<=n;i++)if(f1[i]&&tn[i])k++;
ans[k]++;
}
for(int k=0;k<=n;k++) cout<<ans[k]<<" ";
}
int main()
{
freopen("graph.in","r",stdin);
freopen("graph.out","w",stdout);
cin>>n;
sol();
return 0;
}