#P1815. Friendship

Friendship

题目描述

在现代社会中,每个人都拥有自己的朋友。由于人们都非常忙碌,他们之间只能通过电话进行交流。可以认为,人AA能够与人BB保持联系,当且仅当满足以下条件之一:

  1. AA知道BB的电话号码;或者
  2. AA知道某人CC的电话号码,并且CC能够与BB保持联系。

题目保证,如果AA知道BB的电话号码,那么BB也一定知道AA的电话号码(即关系是对称的)。

有时,某些人可能会遇到不幸的事情,导致他们与其他人失去联系。例如,某人可能丢失了电话簿并同时更换了电话号码。

在此问题中,已知NN个人之间的联系方式。为方便起见,将这NN个人编号为1,2,,N1,2,\ldots,N。给定两个特定的人SSTT,当某些人遭遇不幸时,SS可能会与TT失去联系。你的任务是计算出使这种情况发生所需的最少人数。假设不幸事件永远不会发生在SSTT身上。

输入格式

第一行输入包含三个整数NN2N2002 \leq N \leq 200)、SSTT1S,TN1 \leq S, T \leq N,且STS \neq T)。接下来的NN行,每行包含NN个整数。如果第ii个人知道第jj个人的电话号码,则第(i+1)(i+1)行中的第jj个数为11,否则为00

可以保证输入中11的数量不超过50005000

输出格式

如果无法使AABB失去联系,则单独一行输出"NO ANSWER!"。否则,第一行输出一个整数tt,表示你得到的最少人数;如果tt不为零,则需要第二行,按升序输出tt个整数,表示遭遇不幸的人的编号,整数之间用单个空格分隔。

如果存在多个解,我们将为每个解计算一个分数,并输出分数最小的解。计算分数的方式如下:假设一个解为A1,A2,,AtA_1, A_2, \ldots, A_t1A1<A2<<AtN1 \leq A_1 < A_2 < \ldots < A_t \leq N),则分数为$(A_1-1) \times N^t + (A_2-1) \times N^{t-1} + \ldots + (A_t-1) \times N$。题目保证不会有两个解的分数相同。

示例输入

3 1 3
1 1 0
1 1 1
0 1 1

示例输出

1
2

来源

POJ Monthly