QOJ.ac

QOJ

시간 제한: 2.0 s 메모리 제한: 256 MB 총점: 100

#18901. パッケージ

통계

Vasya は Vinux OS にパッケージをインストールするため、現代的なパッケージマネージャ Vum を使っています。

各パッケージにはインストール可能な複数のバージョンがあります。同じアプリケーションのバージョンは一度に1つしかインストールできません。ある特定のアプリケーションの特定のバージョンをパッケージと呼ぶことにします。異なるアプリケーションの特定のバージョン同士が非互換であることがあるため、Vum には競合という概念があります。各競合はパッケージの集合で、その中からインストールできるのは高々1つです。競合リスト内の複数のパッケージをインストールしようとするとクラッシュしてしまい、Vasya はそれを望んでいません。

あるアプリケーションの異なるバージョン同士は、競合することも、しないこともあります。1つの競合に、あるアプリケーションの複数のバージョン、さらにはすべてのバージョンが含まれる場合もあります。

Vum の競合記述システムはかなり原始的なので、各パッケージは1つの競合にしか記載できません。

Vasya は Vinux をクラッシュさせることなく、$N$ 個の異なるアプリケーションをインストールしたいと考えています。上の規則を破らないようにアプリケーションのバージョンを選ぶ必要がありますが、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 を、2行目にそのためにインストールすべきバージョン番号を空白区切りで出力してください。

$N$ 個のアプリケーションのバージョンは、入力ファイルでアプリケーションが記述された順に出力しなければなりません。選び方が複数ある場合は、いずれか1つを出力してください。

入出力例

入力 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

注記

最初の例には2つの競合があります。1つ目の競合は vim の第 3 バージョンと nano の第 8 バージョンの同時インストールを禁止します。2つ目の競合は、vim の第 1 バージョン、nano の第 5 バージョン、vim の第 2 バージョンのうち1つだけをインストールできるか、何もインストールしないことを表します。正しい解は次のとおりです。

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

2つ目の例には2つのアプリケーションがあり、それぞれ1つのバージョンしかありません。しかし、唯一の競合によって両方のアプリケーションを同時にインストールすることが禁止されています。

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.