QOJ.ac

QOJ

Süre Sınırı: 2.0 s Bellek Sınırı: 256 MB Toplam puan: 100

#18901. חבילה

İstatistikler

כדי להתקין חבילות במערכת ההפעלה 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.