QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 512 MB Points totaux : 100

#16487. Schlüsselknoten

Statistiques

Gegeben sind ein gerichteter Graph $G$ mit $n$ Knoten und $\boldsymbol{n-1}$ gerichteten Kanten sowie eine positive ganze Zahl $k$, die nicht größer als $n$ ist. Es ist garantiert, dass der Graph zusammenhängend ist, wenn alle Kanten von $G$ als ungerichtet betrachtet werden (also einen Baum bildet).

Es gibt $q$ Operationen. Es gibt fünf Arten von Operationen mit folgenden Parametern:

  • 1 x y: Kehre die Richtung der Kante zwischen den Knoten $x$ und $y$ um. Es ist garantiert, dass zwischen den Knoten $x$ und $y$ eine Kante existiert;
  • 2 a: Kehre die Richtung aller eingehenden Kanten des Knotens $a$ um;
  • 3 b: Kehre die Richtung aller ausgehenden Kanten des Knotens $b$ um;
  • 4 c: Kehre die Richtung aller eingehenden und ausgehenden Kanten des Knotens $c$ um;
  • 5 p: Ändere den Wert von $k$ auf $p$.

Eine eingehende Kante des Knotens $u$ ist eine gerichtete Kante mit Endknoten $u$, und eine ausgehende Kante des Knotens $u$ ist eine gerichtete Kante mit Anfangsknoten $u$.

Verwalte diesen gerichteten Graphen und bestimme vor der ersten Operation und nach jeder Operation, ob alle Knoten außer $k$ den Knoten $k$ über die aktuellen gerichteten Kanten erreichen können. Falls ja, gib YES aus, andernfalls NO.

Eingabe

Die erste Zeile enthält drei ganze Zahlen $n,k,q$ ($2 \le n \le 10^6$, $0 \le q \le 10^6$, $1 \le k \le n$).

Jede der folgenden $n-1$ Zeilen enthält zwei positive ganze Zahlen $u_i,v_i$, die eine Kante zwischen den Knoten $u_i$ und $v_i$ angeben, und zwar eine gerichtete Kante vom Knoten $u_i$ zum Knoten $v_i$ ($1 \le u_i,v_i \le n$).

Jede der folgenden $q$ Zeilen enthält $2\sim3$ positive ganze Zahlen, die eine Operation beschreiben. Bedeutung und Format stehen in der obigen Aufgabenbeschreibung ($1 \le x,y,a,b,c,p \le n$).

Es ist garantiert, dass der Graph zusammenhängend ist, wenn alle Kanten von $G$ als ungerichtet betrachtet werden (also einen Baum bildet), und dass bei jeder Operation der ersten Art eine Kante zwischen den Knoten $x$ und $y$ existiert.

Ausgabe

Gib insgesamt $q+1$ Zeilen aus. Bestimme vor der ersten Operation und nach jeder Operation, ob alle Knoten außer $k$ den Knoten $k$ über die aktuellen gerichteten Kanten erreichen können. Falls ja, gib YES aus, andernfalls NO.

Beispiele

Eingabe 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

Ausgabe 1

YES
NO
NO
NO
NO
NO
YES
NO
NO
NO
NO

Eingabe 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

Ausgabe 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.