比赛 期末考试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;
}