- 分享
- 2009-01-08 16:45:22 @
绿色游戏 (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)
哪位大牛会做或有解题报告之类的东西?
在线等啊!