#P14889. Key Point

Key Point

题目描述

给定一个包含 nn 个结点和 n1\boldsymbol{n-1} 条有向边的有向图 GG 和一个不大于 nn 的正整数 kk,保证图 GG 中的所有边在视为无向边后图连通(即形成一棵树)。

现有 qq 次操作。操作共五种,参数分别如下:

  • 1 x y:翻转结点 xx 和结点 yy 之间边的方向,保证结点 xx 和结点 yy 之间存在一条边;
  • 2 a:将结点 aa 的所有入边翻转方向;
  • 3 b:将结点 bb 的所有出边翻转方向;
  • 4 c:将结点 cc 的所有入边和出边翻转方向;
  • 5 p:将 kk 的值修改为 pp

其中,结点 uu 的入边表示以结点 uu 为终点的有向边,结点 uu 的出边表示以结点 uu 为起点的有向边。

你需要维护这个有向图,并在首次操作前和每次操作后,判断是否所有除结点 kk 以外的结点都能通过当前的有向边到达结点 kk,若是则输出 YES,否则输出 NO

输入格式

第一行输入三个整数 n,k,qn,k,q2n1062 \le n \le 10^60q1060 \le q \le 10^61kn1 \le k \le n)。

接下来 n1n-1 行,每行输入两个正整数 ui,viu_i,v_i,表示结点 uiu_i 和结点 viv_i 之间存在一条由结点 uiu_i 至结点 viv_i有向边1ui,vin1 \le u_i,v_i \le n)。

接下来 qq 行,输入每行 232\sim3 个正整数,表示一次操作,含义及格式见「题目描述」(1x,y,a,b,c,pn1 \le x,y,a,b,c,p \le n)。

保证图 GG 中的所有边在视为无向边后图连通(即形成一棵树),保证在进行第一种操作时结点 xx 和结点 yy 之间存在一条边。

输出格式

q+1q+1 行,在首次操作前和每次操作后,判断是否所有除结点 kk 以外的结点都能通过当前的有向边到达结点 kk,若是则输出 YES,反之输出 NO

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
YES
NO
NO
NO
NO
NO
YES
NO
NO
NO
NO
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
YES
NO
YES
NO
NO
YES
NO
YES
NO
NO
NO