题号:NC21349
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
有N只oier喜欢散步谣言,编号为0到N-1
现在有两种谣言,A和B,一开始每只oier要么听到过两种谣言,要么一种都没听到过
已经知道谣言的oier想要把谣言尽快的散布给所有的oier
每只oier有一些自己信任的oier,只有这些信任的oier对他们发布谣言他们才算知道了听说了谣言,否则就会当谣言不存在
不过请注意,这个世界要建立信任并非容易的事情,X信任Y,Y不一定信任X
在每一天的清晨,每只知道至少一种谣言的oier会选择一种自己知道的谣言,花一天时间去散布这种谣言
注意,一只oier一天内可能会收到来自多个信任的oier的谣言,因此可能一天内听说到两种谣言
当然也有可能某只oier一天内同时散步一种谣言并且听说到了另一种谣言
告诉你每只oier一开始知道的谣言情况以及他们之间的信任关系,求出最少需要的天数使得每个oier都听到谣言
不能完成任务输出-1
输入描述:
第一行输入一个整数n (1 ≤ n ≤ 16)表示oier的数量
接下来一行输入一个长度为n的字符串由'Y'和'N'构成,分别表示每只oier一开始听说谣言的情况
接下来n行每行n个字符表示graph矩阵,描述oier之间的信任情况
graph[i][j] = 'Y'表示j信任i
输出描述:
输出一个整数
示例2
输入
复制
4
YNNY
YNNY
YNNY
YNNY
NYYN
示例3
输入
复制
4
YYYY
NYNN
YNYN
NYNY
NNYN
示例4
输入
复制
6
YYYYYN
NYYYYN
YNYYYN
YYNYYN
YYYNYN
YYYYNN
NNNNNN
示例5
输入
复制
4
NNNY
NNNN
YNNN
YNNN
NYYN
示例6
输入
复制
10
NNNNNNNYYY
NYNNYNNYNN
NNYNYNNNNY
YYNNNYNNNN
YNNNYNYNNN
NNYNNYNNYN
NNNNYNNNYY
NYNYNYNNNN
NNNNNNYNYY
NNNYNNNYNY
NYYNNNNYNN
备注:
子任务1: N <= 6
子任务2: N <= 10
子任务3: 无限制