QOJ.ac

QOJ

时间限制: 2.0 s 内存限制: 256 MB 总分: 100

#18901. 软件包

统计

Vasya 使用现代软件包管理器 Vum,在 Vinux 操作系统中安装软件包。

每个软件包都有若干可安装的版本。同一个应用程序一次只能安装其中一个版本。我们将某个应用程序的某个具体版本称为一个软件包。由于不同应用程序的某些版本可能互不兼容,Vum 中存在冲突这一概念。每个冲突都是一个软件包集合,其中至多能安装一个软件包。如果尝试安装同一个冲突列表中的多个软件包,系统就会崩溃,Vasya 不希望发生这种情况。

同一个应用程序的不同版本之间可能存在冲突,也可能不存在。一个冲突中可以包含同一应用程序的多个版本,甚至包含它的所有版本。

由于 Vum 的冲突描述系统相当原始,每个软件包只能出现在一个冲突中。

Vasya 希望安装 $N$ 个不同的应用程序,同时不让他的 Vinux 崩溃。他必须在不违反上述规则的情况下选择应用程序的版本,但 Vum 穷举依赖关系的解析算法无法处理这个任务。Vasya 请你帮助他解决软件包管理器的问题。

输入格式

输入文件的第一行包含一个整数 $N$,表示 Vasya 希望安装的应用程序数量($1 \le N \le 200$)。

接下来的 $N$ 行给出应用程序的描述,其中包含版本列表。一个应用程序的描述由以下以空格分隔的字段组成:

  • 应用程序名:由小写拉丁字母组成的字符串,长度为 1 到 10 个字符;
  • 版本数量:不大于 $1\,000$ 的正整数;
  • 版本号:按升序排列的正整数。

应用程序的编号不大于 $100\,000$。所有应用程序名互不相同。

接下来一行包含数 $K$,表示冲突的数量($0 \le K \le 500$)。

接下来的 $K$ 行描述冲突。每个冲突的描述以正整数 $T$ 开头,表示该冲突中的软件包数量。随后列出 $T$ 个以空格分隔的软件包。每个软件包先给出应用程序名,再给出版本号。

保证冲突中列出的软件包不会重复,且所有版本都在应用程序的描述中出现过。

输出格式

如果无法在没有冲突的情况下安装全部 $N$ 个应用程序,输出文件的唯一一行必须包含单词 No。如果可以,第一行必须包含单词 Yes,第二行必须列出为此应安装的版本号,以空格分隔。

这 $N$ 个应用程序的版本必须按应用程序在输入文件中的描述顺序输出。如果有多种可行的选择方式,输出任意一种。

样例

输入格式 1

3
vim 3 1 2 3
nano 2 5 8
python 2 2 3
2
2 vim 3 nano 8
3 vim 1 nano 5 vim 2

输出格式 1

Yes
2 8 2

输入格式 2

2
firefox 1 38
chrome 1 46
1
2 firefox 38 chrome 46

输出格式 2

No

说明

第一个样例包含两个冲突。第一个冲突禁止同时安装 vim 的第 3 个版本和 nano 的第 8 个版本。第二个冲突表示,vim 的第 1 个版本、nano 的第 5 个版本和 vim 的第 2 个版本中,只能安装其中一个,或者一个也不安装。正确的方案如下:

  • 1 8 2
  • 1 8 3
  • 2 8 2
  • 2 8 3
  • 3 5 2
  • 3 5 3

第二个样例有两个应用程序,每个应用程序只有一个版本。然而,唯一的冲突禁止同时安装这两个应用程序。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.