QOJ.ac

QOJ

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

#16487. קודקוד מפתח

Statistics

נתונים גרף מכוון $G$ בעל $n$ קודקודים ו-$\boldsymbol{n-1}$ קשתות מכוונות, ומספר שלם חיובי $k$ שאינו גדול מ-$n$. מובטח שכאשר מתייחסים לכל הקשתות של $G$ כאל קשתות לא מכוונות, הגרף קשיר (כלומר יוצר עץ).

יש לבצע $q$ פעולות. קיימים חמישה סוגי פעולות, עם הפרמטרים הבאים:

  • 1 x y: הפוך את כיוון הקשת שבין הקודקודים $x$ ו-$y$. מובטח שקיימת קשת בין הקודקודים $x$ ו-$y$;
  • 2 a: הפוך את הכיוון של כל הקשתות הנכנסות לקודקוד $a$;
  • 3 b: הפוך את הכיוון של כל הקשתות היוצאות מהקודקוד $b$;
  • 4 c: הפוך את הכיוון של כל הקשתות הנכנסות לקודקוד $c$ והיוצאות ממנו;
  • 5 p: שנה את ערכו של $k$ ל-$p$.

קשת נכנסת לקודקוד $u$ היא קשת מכוונת המסתיימת ב-$u$, וקשת יוצאת מהקודקוד $u$ היא קשת מכוונת המתחילה ב-$u$.

עליך לתחזק את הגרף המכוון הזה, ולפני הפעולה הראשונה ואחרי כל פעולה לקבוע האם כל הקודקודים מלבד $k$ יכולים להגיע לקודקוד $k$ לאורך הקשתות המכוונות הנוכחיות. אם כן, הדפס YES; אחרת, הדפס NO.

קלט

השורה הראשונה מכילה שלושה מספרים שלמים $n,k,q$ ($2 \le n \le 10^6$, $0 \le q \le 10^6$, $1 \le k \le n$).

כל אחת מ-$n-1$ השורות הבאות מכילה שני מספרים שלמים חיוביים $u_i,v_i$, המציינים קשת בין הקודקודים $u_i$ ו-$v_i$: קשת מכוונת מהקודקוד $u_i$ לקודקוד $v_i$ ($1 \le u_i,v_i \le n$).

כל אחת מ-$q$ השורות הבאות מכילה $2\sim3$ מספרים שלמים חיוביים המתארים פעולה אחת. המשמעות והפורמט מופיעים בתיאור הבעיה לעיל ($1 \le x,y,a,b,c,p \le n$).

מובטח שכאשר מתייחסים לכל הקשתות של $G$ כאל קשתות לא מכוונות, הגרף קשיר (כלומר יוצר עץ), ושבעת ביצוע פעולה מהסוג הראשון קיימת קשת בין הקודקודים $x$ ו-$y$.

פלט

הדפס בסך הכול $q+1$ שורות. לפני הפעולה הראשונה ואחרי כל פעולה, קבע האם כל הקודקודים מלבד $k$ יכולים להגיע לקודקוד $k$ לאורך הקשתות המכוונות הנוכחיות. אם כן, הדפס YES; אחרת, הדפס NO.

דוגמאות

קלט 1

10 10 10
9 10
1 5
3 9
8 9
4 9
7 9
5 4
2 10
6 7
4 5
3 2
3 1
1 10 2
1 5 1
1 4 5
5 4
2 9
1 9 3
2 9

פלט 1

YES
NO
NO
NO
NO
NO
YES
NO
NO
NO
NO

קלט 2

10 4 10
8 9
2 4
10 5
9 4
3 2
1 2
5 4
6 4
7 8
1 2 1
1 2 1
5 10
1 5 4
1 10 5
3 4
1 5 4
5 2
1 5 10
1 4 5

פלט 2

YES
NO
YES
NO
NO
YES
NO
YES
NO
NO
NO

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.