灌篮高手 贪心

来源:互联网 发布:matlab生成秩亏矩阵 编辑:程序博客网 时间:2024/04/27 21:07

 

灌篮高手

tur.exe/tur.in/tur.out

题意描述:

小明所在的篮球俱乐部共有N位灌篮高手(包括他自己),编号为1N。他们之间总是不断地进行着挑战。每一次挑战都是两个人单挑,其中某个人获胜。设已经进行了M场挑战,并且每场挑战的结果都已经公布。现在进行一场超级总决赛,共进行(N-1)场淘汰赛以决出最强的灌篮高手。在这场总决赛中,a能胜b当且仅当在那M场挑战中a胜过b或者a根本没与b交手过。聪明的你也许已经发现,决赛的场次安排能够改变最终的冠军归属。现在要你求出所有可能成为冠军的灌篮高手。

 

输入文件(tur.in)

第一行有一个数N(1<=N<=100,000)

以后N行中,第i行第一个数为 bi, 即在那M场比赛中i胜过的人的个数,后面有bi个按升序排列的数字(其中不可能有i),即i胜过的人的编号。

数据保证Σbi(即M<=1,000,000

 

输出文件(tur.out):

仅有一行,第一个数ge为所有可能成为冠军的人的个数,后面ge个数按升序排列,表示可能成为冠军的人的编号。相邻的数字间用一个空格隔开。不要有多余的空格。

 

输入样例:

4

2 2 3

0

1 2

1 2

 

输出样例:

3 1 3 4

 

 

 

 

模拟打擂台的过程,用N*E的复杂度找出第一个可能的获胜者,然后用类似SPFA的方法找出可能赢他们人,扩展到答案里。

 

这样的打裸肯定坑爹也过不来哦,用一个链表把所有的可能获胜的人串起来,然后一旦他成为获选的人,就将它删去,(实际上就是LZN树的思想,降低常数),这样N越来越小,最后当然跑得出来。

 

 

 

 

写丑了,居然比xqz要慢0.02秒......怨念中