路径计数
题号:NC21353
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

 给你一张有向图
 求可以依次走出多少条不同的从0到N-1的路径
 当前的路径不等于之前的某条路径的定义为
 当前路径上存在相邻两个点u->v,在之前的路径中从未出现过
 注意:路径X不等于路径Y,但是路径Y不一定不等于路径X
 具体见样例一

输入描述:

第一行输入一个整数N (2 ≤ N ≤ 50)
接下来N行每行N个字符表示图的邻接矩阵g
g[i][j]='Y'表示ij可达
g[i][j]='N'表示ij不可达

输出描述:

输出一个整数
示例1

输入

复制
3
NYN
YNY
NNN

输出

复制
2

说明

第一条路径为
0 -> 1 -> 2 (走了0->1 1->2)
第二条路径为
0 -> 1 -> 0 -> 1 -> 2 (1->0是新的走法)
如果先走第二条路径,第一条路径就不能再走
示例2

输入

复制
3
NNY
YNY
YNN

输出

复制
2
示例3

输入

复制
2 
NN
NN

输出

复制
0
示例4

输入

复制
4
NYYY
NNNY
NNNY
NNNN

输出

复制
3

备注:

子任务1: n <= 10
子任务2: n <= 20
子任务3: 无限制