#P16955. [SGU448] Controlled Tournament

[SGU448] Controlled Tournament

题目描述

共有 NN 名网球选手,编号为 1N1\sim N。任意两名选手之间的胜负关系是确定的。

给出矩阵 RR

  • Rij=1R_{ij}=1 表示选手 ii 与选手 jj 比赛时,ii 一定获胜;
  • Rij=0R_{ij}=0 表示 ii 不会战胜 jj

对于任意 iji\ne j,保证恰有一人能战胜另一人。

现在要安排一棵单败淘汰赛树。每个叶子对应一名选手,每个内部结点表示它的两个子比赛胜者之间进行一场比赛。若两棵子树交换左右位置,不视为不同的比赛安排;也就是说,我们只关心配对层次,而不区分一场比赛的“左边”和“右边”。

比赛树的高度必须在所有包含 NN 名选手的合法二叉淘汰赛树中尽可能小,也就是最少需要 log2N\lceil\log_2N\rceil 轮;当 NN 不是 22 的幂时,不同选手可能需要不同数量的实际比赛,相当于存在轮空。

给定你希望夺冠的选手 MM,求有多少种最小高度的比赛安排能使 MM 最终夺冠。

输入格式

第一行两个整数 N,MN,M

接下来 NN 行,每行 NN 个整数,第 ii 行第 jj 个数为 RijR_{ij}

保证:

  • 1N161\le N\le16
  • 1MN1\le M\le N
  • Rii=0R_{ii}=0
  • 对任意 iji\ne jRij=0R_{ij}=0 当且仅当 Rji=1R_{ji}=1

输出格式

输出一个整数,表示满足条件的比赛树数量。

样例

2 1
0 1
0 0
1
3 3
0 1 0
0 0 0
1 1 0
3
6 4
0 0 0 0 0 1
1 0 1 0 1 0
1 0 0 1 1 0
1 1 0 0 1 0
1 0 0 0 0 0
0 1 1 1 1 0
11