QOJ.ac

QOJ

시간 제한: 2 s 메모리 제한: 1024 MB 총점: 100

#439. ชะตากรรม

통계

คำแนะนำ: ในย่อหน้าสุดท้ายของคำอธิบายโจทย์ เราได้ให้คำอธิบายแบบเป็นทางการอย่างย่อไว้

ในอนาคตอันไกลโพ้น ในที่สุดนักฟิสิกส์ก็ค้นพบกฎธรรมชาติของเวลาและเหตุผล แม้ก่อนที่คนคนหนึ่งจะเกิด เราก็สามารถรู้ข้อมูลบางอย่างเกี่ยวกับชีวิตของเขาหรือเธอได้จากการวิเคราะห์เชิงทฤษฎี กล่าวอีกนัยหนึ่ง ฟิสิกส์ทำให้เราสามารถ “ทำนาย” “ชะตากรรม” ของคนคนหนึ่งได้ในระดับหนึ่ง

พูดอย่างง่าย ชะตากรรมของคนคนหนึ่งคือต้นไม้มีราก $T$ ที่ประกอบด้วยจุดเวลา: รากของต้นไม้แทนการเกิด และใบแทนการตาย โหนดที่ไม่ใช่ใบแต่ละโหนด $u$ มีลูกหนึ่งโหนดหรือมากกว่า คือ $v_1,v_2,\ldots,v_{c_u}$ ซึ่งแทนความเป็นไปได้ต่าง ๆ ที่เกิดจากทางเลือกที่แตกต่างกัน $c_u$ ทางของคนคนนั้น ณ เวลาที่ $u$ แทนอยู่ กล่าวอย่างเป็นทางการ ทางเลือก คือเส้นเชื่อม $(u,v_i)$ ในต้นไม้ โดย $u$ เป็นโหนดพ่อแม่ของ $v_i$

ชีวิตของคนคนหนึ่งคือเส้นทางจากการเกิด (ราก) ไปยังการตาย (โหนดใบโหนดหนึ่ง) โดยไม่ผ่านโหนดใดซ้ำ เส้นทางย่อยใด ๆ ของเส้นทางนี้ที่มีเส้นเชื่อมอย่างน้อยหนึ่งเส้นคือ ประสบการณ์ชีวิต ช่วงหนึ่งของคนคนนั้น และประสบการณ์ชีวิตทั้งหมดที่เขาหรือเธออาจมีจากการใช้ชีวิตในทุกวิถีทางที่เป็นไปได้ เรียกว่า ประสบการณ์ชีวิตที่เป็นไปได้ กล่าวอีกนัยหนึ่ง ประสบการณ์ชีวิตที่เป็นไปได้ทั้งหมดคือเส้นทางจาก $u$ ไปยัง $v$ ทั้งหมดที่ $u,v\in T$, $u\ne v$ และ $u$ เป็นบรรพบุรุษของ $v$ ในทางคณิตศาสตร์ ประสบการณ์ชีวิตที่เป็นไปได้เช่นนี้เขียนแทนด้วยคู่อันดับ $(u,v)$ และเซตของประสบการณ์ชีวิตที่เป็นไปได้ทั้งหมดของต้นไม้ $T$ เขียนแทนด้วย $P_T$

ทฤษฎีฟิสิกส์ไม่เพียงทำให้เราสังเกตต้นไม้ที่แทนชะตากรรมได้ แต่ยังทำให้เราวิเคราะห์ได้ว่าประสบการณ์ชีวิตที่เป็นไปได้บางช่วงนั้น “สำคัญ” หรือไม่ ทุกทางเลือกที่คนคนหนึ่งเลือก ซึ่งก็คือเส้นเชื่อมแต่ละเส้นในต้นไม้ อาจ สำคัญ หรือ ไม่สำคัญ ประสบการณ์ชีวิตที่เป็นไปได้ช่วงหนึ่งเรียกว่าสำคัญ ก็ต่อเมื่อมีเส้นเชื่อมที่สำคัญอย่างน้อยหนึ่งเส้นบนเส้นทางที่สอดคล้องกัน เราสามารถสังเกตได้ว่าประสบการณ์ชีวิตที่เป็นไปได้บางช่วงนั้นสำคัญ กล่าวอีกนัยหนึ่ง เราสามารถสังเกตได้เซต $Q\subseteq P_T$ ซึ่งประสบการณ์ชีวิตที่เป็นไปได้ทุกคู่ $(u,v)\in Q$ ล้วนสำคัญ

รูปทรงของต้นไม้ $T$ ถูกคำนวณและกำหนดไว้แล้ว และเซต $Q$ ก็ถูกสังเกตไว้แล้วเช่นกัน ความไม่แน่นอนของชะตากรรมของคนคนหนึ่งจึงลดลงอย่างมาก แต่ความไม่แน่นอนก็ยังคงมหาศาล มาลองคำนวณกัน: สำหรับต้นไม้ $T$ และเซต $Q$ ที่กำหนด มีวิธีที่แตกต่างกันกี่วิธีในการกำหนดว่าเส้นเชื่อมแต่ละเส้นสำคัญหรือไม่ โดยเป็นไปตามข้อจำกัดที่สอดคล้องกับ $Q$ ที่สังเกตได้ นั่นคือ สำหรับทุก $(u,v)\in Q$ มีเส้นเชื่อมอย่างน้อยหนึ่งเส้นบนเส้นทางจาก $u$ ไปยัง $v$ ที่ถูกกำหนดให้สำคัญ

คำอธิบายแบบเป็นทางการ: กำหนดต้นไม้ $T=(V,E)$ และเซตของคู่โหนด $Q\subseteq V\times V$ โดยสำหรับทุก $(u,v)\in Q$ มี $u\ne v$ และ $u$ เป็นบรรพบุรุษของ $v$ ในต้นไม้ $T$ ในที่นี้ $V$ และ $E$ แทนเซตของโหนดและเซตของเส้นเชื่อมของต้นไม้ $T$ ตามลำดับ จงหาจำนวนฟังก์ชันที่แตกต่างกัน $f:E\to\{0,1\}$ (กำหนดค่า $f(e)$ เป็น $0$ หรือ $1$ ให้เส้นเชื่อมแต่ละเส้น $e\in E$) ที่ทำให้สำหรับทุก $(u,v)\in Q$ มีเส้นเชื่อม $e$ บนเส้นทางจาก $u$ ไปยัง $v$ ที่ $f(e)=1$ เนื่องจากคำตอบอาจมีขนาดใหญ่มาก ให้ส่งออกเพียงเศษจากการหารคำตอบด้วย $998\,244\,353$ (ซึ่งเป็นจำนวนเฉพาะ)

ข้อมูลนำเข้า

อ่านข้อมูลจากไฟล์ destiny.in

  • บรรทัดแรกมีจำนวนเต็มบวก $n$ แทนขนาดของต้นไม้ $T$ โหนดในต้นไม้มีหมายเลขตั้งแต่ $1$ ถึง $n$ และโหนดหมายเลข $1$ เป็นราก
  • แต่ละบรรทัดใน $n-1$ บรรทัดถัดมามีจำนวนสองจำนวน $x_i,y_i$ คั่นด้วยช่องว่าง โดย $1\le x_i,y_i\le n$ แสดงว่ามีเส้นเชื่อมระหว่างโหนด $x_i$ และ $y_i$ ในต้นไม้ แต่ไม่รับประกันทิศทางของเส้นเชื่อมนี้
  • บรรทัดถัดมามีจำนวนเต็มไม่เป็นลบ $m$ แทนจำนวนข้อมูลที่สังเกตได้
  • แต่ละบรรทัดใน $m$ บรรทัดถัดมามีจำนวนสองจำนวน $u_i,v_i$ คั่นด้วยช่องว่าง แสดงว่า $(u_i,v_i)\in Q$ โปรดทราบ: ข้อมูลนำเข้าอาจมีข้อมูลซ้ำกัน กล่าวอีกนัยหนึ่ง อาจมี $i\ne j$ ซึ่ง $u_i=u_j$ และ $v_i=v_j$

ขนาดและข้อจำกัดของข้อมูลนำเข้าแสดงไว้ในตารางท้ายโจทย์

ข้อมูลส่งออก

ส่งออกไปยังไฟล์ destiny.out

  • ส่งออกเพียงหนึ่งบรรทัดที่มีจำนวนเต็มหนึ่งจำนวน แทนเศษจากการหารจำนวนวิธีด้วย $998\,244\,353$

ตัวอย่าง

ข้อมูลนำเข้า 1

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

ข้อมูลส่งออก 1

10

หมายเหตุ

มีทั้งหมด $16$ วิธี โดยมี $6$ วิธีต่อไปนี้ที่ไม่เป็นไปตามเงื่อนไขของโจทย์:

  • กำหนดให้ $(1,2),(2,3),(3,5)$ ไม่สำคัญ และ $(3,4)$ สำคัญ: ไม่มีข้อจำกัดใดในเซต $Q$ ที่เป็นจริง
  • กำหนดให้ $(1,2),(2,3),(3,4),(3,5)$ ไม่สำคัญ: ไม่มีข้อจำกัดใดในเซต $Q$ ที่เป็นจริง
  • กำหนดให้ $(1,2),(2,3)$ ไม่สำคัญ และ $(3,4),(3,5)$ สำคัญ: ข้อจำกัด $(1,3)$ ในเซต $Q$ ไม่เป็นจริง
  • กำหนดให้ $(1,2),(2,3),(3,4)$ ไม่สำคัญ และ $(3,5)$ สำคัญ: ข้อจำกัด $(1,3)$ ในเซต $Q$ ไม่เป็นจริง
  • กำหนดให้ $(2,3),(3,5)$ ไม่สำคัญ และ $(1,2),(3,4)$ สำคัญ: ข้อจำกัด $(2,5)$ ในเซต $Q$ ไม่เป็นจริง
  • กำหนดให้ $(2,3),(3,4),(3,5)$ ไม่สำคัญ และ $(1,2)$ สำคัญ: ข้อจำกัด $(2,5)$ ในเซต $Q$ ไม่เป็นจริง
  • สำหรับวิธีอื่น ๆ ข้อจำกัดทั้งหมดในเซต $Q$ เป็นจริง

ข้อมูลนำเข้า 2

15
2 1
3 1
4 3
5 2
6 3
7 6
8 4
9 5
10 7
11 5
12 10
13 3
14 9
15 8
6
3 12
5 11
2 5
3 13
8 15
1 13

ข้อมูลส่งออก 2

960

ตัวอย่าง 3

ดูไฟล์ destiny/destiny3.in และ destiny/destiny3.ans ในไดเรกทอรีของผู้เข้าแข่งขัน

ตัวอย่าง 4

ดูไฟล์ destiny/destiny4.in และ destiny/destiny4.ans ในไดเรกทอรีของผู้เข้าแข่งขัน

ข้อจำกัด

หมายเลขชุดทดสอบ $n$ $m$ $T$ เป็นต้นไม้ทวิภาคแบบบริบูรณ์
$1$ $\le 10$ $\le 10$ ไม่ใช่
$2$
$3$
$4$
$5$ $\le 500$ $\le 15$
$6$ $\le 10000$ $\le 10$
$7$ $\le 100000$ $\le 16$
$8$ $\le 500000$
$9$ $\le 100000$ $\le 22$
$10$ $\le 500000$
$11$ $\le 600$ $\le 600$
$12$ $\le 1000$ $\le 1000$
$13$ $\le 2000$ $\le 500000$
$14$
$15$ $\le 500000$ $\le 2000$
$16$
$17$ $\le 100000$ $\le 100000$ ใช่
$18$
$19$ $\le 50000$ ไม่ใช่
$20$ $\le 80000$
$21$ $\le 100000$ $\le 500000$
$22$
$23$ $\le 500000$
$24$
$25$

ข้อมูลทั้งหมดเป็นไปตามเงื่อนไข: $n\le 5\times10^5$, $m\le 5\times10^5$ ข้อมูลนำเข้าประกอบเป็นต้นไม้ และสำหรับ $1\le i\le m$ โหนด $u_i$ เป็นบรรพบุรุษของ $v_i$ เสมอ

ต้นไม้ทวิภาคแบบบริบูรณ์: ในโจทย์นี้ ต้นไม้ที่ทุกโหนดที่ไม่ใช่ใบมีทั้งลูกซ้ายและลูกขวา และโหนดใบทั้งหมดมีความลึกเท่ากัน เรียกว่าต้นไม้ทวิภาคสมบูรณ์ เมื่อกำหนดหมายเลขให้โหนดในต้นไม้ทวิภาคสมบูรณ์จากบนลงล่างและจากซ้ายไปขวา ต้นไม้ที่เกิดจากโหนดจำนวนหนึ่งซึ่งมีหมายเลขน้อยที่สุดเรียกว่าต้นไม้ทวิภาคแบบบริบูรณ์

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.