SP3495 NBLTHIEF - The Nobel Thief
题目描述
在西孟加拉邦维斯瓦·巴拉迪大学的一座博物馆里,$Kabiguru\;Rabindranath\; Thagore$的诺贝尔奖奖品被盗了。中央调查区$CBI$受委托破案以及找回奖品。$CBI$已经确定了一些嫌疑人(全集记为$S$)和一些线索(全集记为$C$),并将他们每个人与这组线索的不同子集(子集间有交集)联系起来,记作$S\rightarrow C$.现有$p$个嫌疑犯和$q$个线索。$1\sim p$的所有整数表示了$p$个嫌疑犯,而$q$个字母则代表了$q$个线索,它们有不同的重要程度。我们约定,字典序表示线索的重要程度,而$a$的优先级最高。
设$L_0$是嫌疑犯的全集。对于每个线索$\alpha$,记$L_+=\{s|s\in S,s\rightarrow \alpha\},L_-=C_LL_+$,则线索$\alpha$的区分度可以表示为$\delta_{\alpha}=-|card(L_+)-card(L_-)|$
记$L^*$为$L_0$的一组两两不相交的子集,他们每一个都包含至少两个元素.线索$\alpha$在$L^*$中的区分度$\delta_{\alpha}^*$被定义为$\sum_{S'\subseteq S}\limits \delta_{\alpha}^{'}$.
$CBI$希望,他能选择一组重要线索$D$,以便这些线索中的一些或全部的存在或不存在可以唯一地识别每个嫌疑人。选择将分轮进行。
设$L^{*}$在起初仅包含$L_{0}$,在每一轮的选择中,具有最高区分度的线索$\beta$被选中。如果此时存在区分度相同的情况,按照重要程度选择。对于每一轮选择,$L_+,L_-$中元素小于$2$的将被删去,因为目前的线索足够区分这个子集中的嫌犯。当$L^*$中的元素都被删去时,所选的线索构成集合$D$。
$CBI$希望你能编写一个程序来找出$D$。
输入格式
输入可能包含多组数据。每一组数据有单独的一行,包含一个代表案件编号的整数$k$和$p$个两两隔着一个空格的字符串,代表他所对应的线索们,输入以$0$结尾。
输出格式
对于每个案件,输出单独的一行,包含一个整数$k$和重要线索$D$,按他们选择的顺序排序。