QOJ.ac

QOJ

时间限制: 3 s 内存限制: 256 MB 总分: 100

#367. คฤหาสน์แนวยาว

统计

มีคฤหาสน์ขนาดใหญ่ใกล้บ้านของ 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$) ให้พิมพ์ 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.