QOJ.ac

QOJ

حد الوقت: 2.0 s حد الذاكرة: 256 MB مجموع النقاط: 100

#18901. حزمة

الإحصائيات

لتثبيت الحزم في نظام التشغيل Vinux، يستخدم Vasya برنامج Vum، مدير الحزم الحديث.

لكل حزمة عدة إصدارات يمكن تثبيتها. لا يمكن تثبيت أكثر من إصدار واحد للتطبيق نفسه في آن واحد. لنسمِّ إصدارًا محددًا من تطبيق محدد حزمة. وبما أن إصدارات محددة من تطبيقات مختلفة قد تكون غير متوافقة مع بعضها، يوجد في 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 والإصدار الثامن من nano في آن واحد. وينص الثاني على أنه لا يمكن تثبيت إلا واحدة من الحزم التالية — الإصدار الأول من vim، والخامس من nano، والثاني من vim — أو عدم تثبيت أي منها. الحلول الصحيحة هي:

  • 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.