#P14910. [OOI2014预选赛]Отличная лекция精彩的讲座
[OOI2014预选赛]Отличная лекция精彩的讲座
题目描述
在一所非常著名的大学里,经常会有重要人物前来讲有趣的课程。一场讲座通常由一系列演绎推理组成,形式为“由 可推出 ”。几乎所有人都有逻辑思维能力:如果他们知道 推出 ,且 推出 ,那么他们就可以认为 推出 。因为讲师不喜欢完全无意义的推理,所以他从不会两次推出同一个结论;也就是说,不存在两条形如“由 推出 ”和“由 推出 ”的推理。
若干学生来听这场讲座。每个学生已经对世界有一些认识:他认为某些命题为假,某些命题为真。讲座过程中,讲师依次告诉他们一些演绎推理;然而在某个时刻,这些推理可能与某个学生已有的认识发生矛盾。例如,学生认为 为假、 为真,而讲师说“由 推出 ”。
请你对每个学生求出:讲师的第几个推理第一次导致它与该学生的世界观发生矛盾。所谓矛盾,是指学生从自己认为为真的命题集合出发,借助讲师已经给出的演绎推理,可以逻辑推出一个他认为为假的命题。
举一个典型讲座的例子。假设讲师依次给出推理:“由 推出 ”,“由 推出 ”,“由 推出 ”。某个学生认为 为真、 为假。听到第一条推理后,学生会认为 为真;听到第二条推理后仍未发生矛盾;听到第三条“由 推出 ”后,学生会认为 为真,并且借助第二条推理推出 为真,这与他原先认为 为假矛盾。
如果另一个学生认为 为假、 为真,则对他而言不会在任何时刻发生矛盾:即使知道了讲师的全部推理,他也不能从自己认为为真的命题推出假的命题。
输入格式
第一行输入整数 ,表示讲师给出的演绎推理数量()。
接下来 行,每行描述一条推理,包含两个整数 ,分别表示该推理的前件和后件(,)。也就是说,讲师声明“由命题 可推出命题 ”。保证所有 互不相同。
下一行输入整数 ,表示学生数量()。接下来给出每个学生的知识描述。
每个学生的描述以整数 开始,表示他认为为真的命题数量;随后给出 个命题编号。接着给出整数 ,表示他认为为假的命题数量;随后给出 个命题编号。
所有命题编号都在 到 之间。每个学生至少知道一些内容,即 。同一个学生描述中出现的所有命题编号互不相同。所有学生描述中提到的命题总数,即所有 之和,不超过 。
输出格式
对每个学生输出一个整数:使其世界观第一次产生矛盾的推理编号;如果他与讲师给出的全部推理都不矛盾,输出 。
样例
样例 1
输入:
6
1 2
2 5
5 7
5 6
2 3
2 4
3
2 1 5 2 3 7
1 2 1 6
1 6 1 2
输出:
3
4
-1
样例 2
输入:
5
1 2
2 3
3 4
4 5
5 1
6
1 2 1 4
1 4 1 2
1 2 1 3
1 3 1 2
1 1 1 5
1 5 1 1
输出:
3
5
2
5
4
5
评分方式
测试点分为四组:
| 组别 | 测试点 | 附加限制 | 分值 |
|---|---|---|---|
| 0 | 1 | 样例测试 | 0 |
| 1 | 2-12 | 20 | |
| 2 | 13-20 | ||
| 3 | 原题未给出具体编号 | 无额外限制,离线评测 | 60 |
每组测试只有在通过该组全部测试后才得分。每一组只会在通过所有前置组测试后进行评测。