QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 512 MB Total points: 100

#24341. נגיפים

Statistics

אחת המשימות החשובות ביותר במדעי המחשב המודרניים היא מידול תהליכים ביולוגיים. לאחרונה גילו ביולוגים $n$ נגיפים, ולכל אחד מהם הוקצה מספר קוד ייחודי מ־$1$ עד $n$. נגיף מסוגל לחדור לתאים של יצורים אחרים. בתחילה עומדים לרשות המדענים $n$ תאים, הממוספרים מ־$1$ עד $n$, כאשר תא מספר $i$ נגוע בנגיף $i$. כל תא יכול להיות נגוע בנגיף אחד בלבד.

לכל תא נקבעה מידת הרגישות שלו לכל אחד מהנגיפים. כלומר, לכל תא ידוע לאיזה נגיף הוא רגיש ביותר, לאיזה מבין הנגיפים הנותרים הוא רגיש ביותר, וכן הלאה.

התאים הנגועים בנגיפים תוקפים זה את זה. נניח שתא מספר $i$ נגוע כעת בנגיף מספר $a$ ותוקף תא מספר $j$, הנגוע בנגיף מספר $b$. אם תא מספר $j$ רגיש יותר לנגיף $a$ מאשר לנגיף $b$, אז תא מספר $j$ נעשה נגוע בנגיף $a$.

בניסוי, המדענים מכניסים את כל $n$ התאים לסביבה סגורה, שבה הם יכולים לתקוף זה את זה באופן שרירותי. הניסוי מסתיים כאשר שום תקיפה כזו אינה יכולה לשנות את הנגיף שבו נגוע תא כלשהו.

המדענים מכנים נגיף מספר $i$ יציב אם בכל רצף של תקיפות בין התאים המוביל לסיום הניסוי יישאר לפחות תא אחד הנגוע בנגיף מספר $i$.

המדענים מכנים נגיף מספר $i$ בר־קיימא אם קיים רצף של תקיפות בין התאים המוביל לסיום הניסוי, שאחריו יישאר לפחות תא אחד הנגוע בנגיף מספר $i$.

לדוגמה, נניח שיש שני נגיפים, תא מספר $1$ רגיש ביותר לנגיף מספר $1$, ותא מספר $2$ רגיש ביותר לנגיף מספר $2$. אז הניסוי מסתיים מיד: שום תקיפה אינה משנה את הנגיף שבו נגוע תא. לכן שני הנגיפים יציבים ובני־קיימא.

כעת נניח שיש שני נגיפים, אך תא מספר $1$ רגיש ביותר לנגיף מספר $2$, ותא מספר $2$ רגיש ביותר לנגיף מספר $1$. אז הניסוי מסתיים לאחר כל תקיפה של תא אחד את האחר. קיימים שני תרחישים. בראשון, תא $1$ תוקף את תא $2$, ושני התאים נעשים נגועים בנגיף $1$. בשני, תא $2$ תוקף את תא $1$, ולאחר מכן שני התאים נגועים בנגיף $2$. לכן אין נגיפים יציבים, אך שני הנגיפים בני־קיימא.

לבסוף, נניח שיש שני נגיפים ושני התאים רגישים יותר לנגיף מספר $1$. אז תקיפה של תא $1$ בידי תא $2$ אינה משנה את הנגיף שבו הוא נגוע, ואילו אם תא $1$ תוקף את תא $2$, התא השני נעשה נגוע בנגיף $1$. לכן הניסוי יסתיים לאחר תקיפה של תא $1$ בידי תא $2$; נגיף $1$ יציב ובר־קיימא, ואילו לנגיף $2$ אין אף אחת משתי התכונות.

על המדענים לענות על שני סוגי שאלות: אילו נגיפים יציבים ואילו נגיפים בני־קיימא.

כתבו תוכנית אשר קובעת, על סמך תיאור התאים וסוג השאלה, את כל הנגיפים היציבים או את כל הנגיפים בני־הקיימא.

קלט

השורה הראשונה מכילה מספר שלם $n$ — מספר הנגיפים, ובהתאם גם מספר התאים ($1 \le n \le 500$).

לאחר מכן מופיעים תיאורי התאים ב־$n$ שורות. לכל תא נתונים $n$ מספרים שונים מ־$1$ עד $n$: מספרי הנגיפים בסדר יורד של רגישות התא אליהם.

השורה האחרונה מכילה מספר $p$, המציין את תכונת הנגיפים המעניינת את המדענים. הערך $p = 1$ פירושו שהם רוצים לקבוע את כל הנגיפים היציבים, והערך $p = 2$ פירושו שהם רוצים לקבוע את כל הנגיפים בני־הקיימא.

פלט

השורה הראשונה חייבת להכיל מספר שלם $k$ — מספר הנגיפים בעלי התכונה המעניינת את המדענים ($0 \le k \le n$).

השורה השנייה חייבת להכיל $k$ מספרים שלמים — מספרי הנגיפים בעלי תכונה זו. יש להדפיס את מספרי הנגיפים בסדר עולה.

דוגמאות

קלט 1

2
1 2
2 1
1

פלט 1

2
1 2

קלט 2

2
1 2
2 1
2

פלט 2

2
1 2

קלט 3

2
2 1
1 2
1

פלט 3

0

קלט 4

2
2 1
1 2
2

פלט 4

2
1 2

קלט 5

2
1 2
1 2
1

פלט 5

1
1

קלט 6

2
1 2
1 2
2

פלט 6

1
1

קלט 7

4
3 2 4 1
1 4 2 3
3 1 2 4
1 4 2 3
1

פלט 7

1
3

קלט 8

4
3 2 4 1
1 4 2 3
3 1 2 4
1 4 2 3
2

פלט 8

3
1 3 4

תתי־משימות

תת־משימה נקודות הגבלות על $n$ הגבלות על $p$ תתי־משימות נדרשות תוצאות במהלך התחרות
1 11 $1 \le n \le 5$ $p = 1$ לפי בדיקה
2 21 $1 \le n \le 500$ $p = 1$ 1 שגיאה ראשונה
3 22 $1 \le n \le 5$ דוגמאות, 1 לפי בדיקה
4 31 $1 \le n \le 50$ דוגמאות, 1–3 שגיאה ראשונה
5 15 $1 \le n \le 500$ דוגמאות, 1–4 שגיאה ראשונה

מידע כללי על משימות הסבב הראשון

יש לקרוא את הנתונים מהקלט הסטנדרטי ולהדפיס את הפלט לפלט הסטנדרטי.

בכל המשימות, נקודות על תת־משימה ניתנות רק אם כל הבדיקות של אותה תת־משימה עברו בהצלחה.

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.