/ Vijos / 讨论 / 分享 /

难题求助

绿色游戏 (gra)

题目描述:

“绿色游戏”是2个选手的游戏,我们称之为安和比利。他们的任务是移动木板上的pawn。

板的一些区域为绿色,其他为白色。他们从整数1编号到整数(a+b)。区域1...a属于安,(a+1)至(a+b)属于比利。

对于每一区域都有一给定的successors 集合,其包括在一次移动中从此区域所能到达的所有其他区域。集合的选择遵循以下原则:若区域属于安,则successors 集合属于比利,反过来也一样。所有区域的successors 集合都不为空,因此我们总是能移动。

在游戏的开始我们把pawn放在任意被选中的开始区域P中,接着,选手移动pawn,从属于他的区域到任何此区域的successors 集合(我们知道它属于对手所有)。 游戏由区域P的物主开始 。当pawn在某一区域第二次出现时,游戏结束。我们称此区域为Q。 如果从Q的第一次出现到第二次出现的连续移动过程中,pawn出现在绿色区域上至少一次,安赢,否则,比利胜利。我们认为有一种策略,若给定开始区域P,则在此次游戏中安总是能赢,而不管比利怎样移动。

写一程序:

• 从文本文件GRA.IN读入木板的描述,

• 计算安有获胜的策略的区域的集合,

• 结果写入文本文件GRA.OUT

输入 :

在文本文件GRA.IN的第一行有2正整数a,b。分别表示属于安、比利的区域的个数。a,b满足条件: 1 < = a+b < = 3000。 在下面a+b行木板的区域的描述:首先是安的区域的描述,然后是比利。第(i+1)行,1 < = i < = a+b的开始为俩整数z,k,分别表示区域i的颜色( 0——白色,1——绿色)和其successors 集合元素的个数。接着为k个整数(1 < = k < a+b),表示successors 集合中的具体元素(在同一行)。板上的绿色区域的个数不比100大。板上全部区域的successors 集合元素的个数不比30000大。

输出 :

文本文件GRA.OUT的第一个行为表示安有获胜的策略的区域的个数l。下面l行分别为这些区域的编号。每行一个,升序。

输入样例:

5 3

0 2 6 7

0 3 6 7 8

0 1 8

1 1 7

1 1 8

1 2 1 2

0 2 1 2

0 2 3 4

输出样例:

5

1

2

4

6

7

---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|-

原题 poi2001 stageI green game(gra)

哪位大牛会做或有解题报告之类的东西?

在线等啊!

0 条评论

目前还没有评论...