QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 256 MB Total points: 100

#367. האחוזה הארוכה

Statistics

ליד ביתו של JOI-kun נמצאת אחוזה רחבת ידיים. באחוזה יש $N$ חדרים המסודרים בשורה ממזרח למערב. החדר ה-$i$ מהחדר המזרחי ביותר נקרא חדר $i$. לכל $i$ שעבורו $1 \le i \le N-1$, חדר $i$ וחדר $i+1$ מחוברים במסדרון. אפשר לעבור במסדרונות בשני הכיוונים. כדי להיכנס למסדרון מתוך חדר נדרש מפתח. לכל מפתח יש מספר הנקרא הסוג שלו. ייתכן שלכמה מפתחות יהיה אותו סוג.

כדי להיכנס למסדרון שבין חדר $i$ לחדר $i+1$, מכל אחד משני החדרים, נדרש מפתח מסוג $C_i$.

בחדר $i$ יש $B_i$ מפתחות. הסוגים שלהם הם $A_{i,j}$ ($1 \le j \le B_i$). כאשר JOI-kun נכנס לחדר, הוא אוסף את כל המפתחות שבחדר. לאחר מכן הוא יכול להשתמש בהם כדי להיכנס למסדרונות.

JOI-kun יכול להשתמש במפתחות כמה פעמים שירצה. לפעמים הוא משיג כמה מפתחות מאותו סוג. אולם אין לו יתרון מיוחד בהחזקת כמה מפתחות מאותו סוג לעומת החזקת מפתח אחד בלבד מאותו סוג.

כדי להתמודד עם מצב שבו ילך לאיבוד באחוזה, JOI-kun מתכנן לכתוב תוכנית שתענה על השאילתות הבאות:

  • אם JOI-kun נכנס לחדר $x$ ללא מפתחות כלל, האם הוא יכול להגיע לחדר $y$?

תפקידכם הוא לכתוב במקום JOI-kun תוכנית שעונה על השאילתות האלה.

משימה

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

קלט

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

  • השורה הראשונה מכילה מספר שלם $N$, מספר החדרים באחוזה.
  • השורה השנייה מכילה $N-1$ מספרים שלמים $C_1,C_2,\ldots,C_{N-1}$ המופרדים ברווחים. משמעותם היא שנדרש מפתח מסוג $C_i$ כדי להיכנס למסדרון המחבר בין חדר $i$ לחדר $i+1$.
  • השורה ה-$i$ ($1 \le i \le N$) מבין $N$ השורות הבאות מכילה מספר שלם חיובי $B_i$, ואחריו $B_i$ מספרים שלמים $A_{i,1},A_{i,2},\ldots,A_{i,B_i}$ המופרדים ברווחים. משמעותם היא שבחדר $i$ יש $B_i$ מפתחות, והסוגים שלהם הם $A_{i,j}$ ($1 \le j \le B_i$).
  • השורה הבאה מכילה מספר שלם $Q$, מספר השאילתות.
  • השורה ה-$k$ ($1 \le k \le Q$) מבין $Q$ השורות הבאות מכילה שני מספרים שלמים $X_k,Y_k$ המופרדים ברווח. משמעותם היא שהשאילתה ה-$k$ שואלת האם JOI-kun יכול להגיע מחדר $X_k$ לחדר $Y_k$, בהנחה שהוא נמצא כעת בחדר $X_k$ ללא מפתחות כלל.

פלט

כתבו $Q$ שורות לפלט הסטנדרטי. השורה ה-$k$ ($1 \le k \le Q$) מבין $Q$ השורות תכיל YES אם הוא יכול להגיע מחדר $X_k$ לחדר $Y_k$, בהנחה שהוא נמצא כעת בחדר $X_k$ ללא מפתחות כלל. אחרת היא תכיל NO.

מגבלות

כל נתוני הקלט מקיימים את התנאים הבאים.

  • $2 \le N \le 500\,000$.
  • $1 \le Q \le 500\,000$.
  • $1 \le B_1+B_2+\cdots+B_N \le 500\,000$.
  • $1 \le B_i \le N$ ($1 \le i \le N$).
  • $1 \le C_i \le N$ ($1 \le i \le N-1$).
  • $1 \le A_{i,j} \le N$ ($1 \le i \le N$, $1 \le j \le B_i$).
  • $B_i$ המספרים השלמים $A_{i,1},\ldots,A_{i,B_i}$ שונים זה מזה ($1 \le i \le N$).
  • $1 \le X_k \le N$ ($1 \le k \le Q$).
  • $1 \le Y_k \le N$ ($1 \le k \le Q$).
  • $X_k \ne Y_k$ ($1 \le k \le Q$).

תתי־משימות

במשימה זו יש בסך הכול 4 תתי־משימות. הניקוד והמגבלות הנוספות של כל תת־משימה הם כדלקמן:

תת־משימה 1 [5 נקודות]

  • $N \le 5\,000$.
  • $Q \le 5\,000$.
  • $B_1+B_2+\cdots+B_N \le 5\,000$.

תת־משימה 2 [5 נקודות]

  • $N \le 5\,000$.
  • $B_1+B_2+\cdots+B_N \le 5\,000$.

תת־משימה 3 [15 נקודות]

  • $N \le 100\,000$.
  • $C_i \le 20$ ($1 \le i \le N-1$).
  • $A_{i,j} \le 20$ ($1 \le i \le N$, $1 \le j \le B_i$).

תת־משימה 4 [75 נקודות]

אין מגבלות נוספות.

דוגמאות

קלט 1

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

פלט 1

YES
NO
NO
YES

הסבר

  • בשאילתה הראשונה, אם JOI-kun מבקר בחדרים $2,1,2,3,4$ בסדר זה, הוא מגיע לחדר $4$.
  • בשאילתה השנייה הוא יכול לבקר רק בחדרים $3,4$. מכיוון שהוא יכול להשיג רק מפתחות מסוגים $1,3$, הוא אינו יכול להגיע לחדר $2$.
  • בשאילתה השלישית הוא אינו יכול להשיג מפתח מסוג $4$ מחדר $5$ לחדר $4$. לכן הוא אינו יכול להגיע לחדר $5$.
  • בשאילתה הרביעית, אם הוא מבקר בחדרים $5,4,3$ בסדר זה, הוא מגיע לחדר $3$.

קלט 2

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

פלט 2

NO
YES
NO
YES

קלט 3

7
6 3 4 1 2 5
1 1
1 5
1 1
1 1
2 2 3
1 4
1 6
3
4 1
5 3
4 7

פלט 3

YES
NO
YES

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.