题目
思路来源
定理:任何竞赛图都有哈密顿路径,强连通的竞赛图有哈密顿回路
证明
任意竞赛图都有哈密顿path(A Tournament has a Hamiltonian path)_证明竞赛图中必存在哈密顿通路_unsolvedmys的博客-优快云博客
显然n<=2成立,下面证n>=3的情况
具体来说,假设已经存在一条1到n的哈密顿路径,起点为1,终点为n
考虑新加入第n+1个点,设为点x,下面证明仍能构成哈密顿路径
由于x和前n个点两两之间都有边,
不妨,把存在x->i边的点i,称为out点,存在i->x的边的点i,称为in点
1. 若点n为out点,只需把x放在n后
2. 若点1为in点,只需把x放在1前
3. 否则,点1为out点,点n为in点,必存在i,使得点i为out点,而点i+1为in点
这样存在边i->x->(i+1),只需把x插在这个位置即可,得证
题解
竞赛图,相当于对C(n,2)条边的完全图定向,定为有向图
由定理,对于任意竞赛图,最长链长度都为n
所以,长度为1到n-1时输出0,为n时输出2的C(n,2)次方
代码
#include<bits/stdc++.h>
using namespace std;
int t,n;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=1;i<n;++i)puts("0");
printf("%lld\n",1ll<<(1ll*n*(n-1)/2));
}
return 0;
}