G - Breaking Friends

解説を見る
  • 実行時間制限:3000 ms
  • メモリ制限:1073741824 Bytes
  • 配点:150
  • ジャッジ:Batch

通常と異なる実行時間制限に注意してください。

問題

NN 人の PCP 部員がいて、それぞれに 11 から NN までの番号がついています。
1iM1 \leq i \leq M を満たす ii について、部員 AiA_i と部員 BiB_i は友達です。

また、「知り合い」という関係も存在しています。「友達」や「知り合いの友達」は、全員知り合いで、そうでない人は知り合いではありません。

部員たちは 1 人以上で「グループ」をつくっています。全員が何らかのグループに所属しています。
グループのメンバーは、全員がほかのメンバーと互いに知り合いの関係にあり、また各部員は所属していないグループのメンバーは知りません。

QQ 回の「できごと」( eventevent )が発生するので、適切に対処してください。各「できごと」の内容は、次のうちのどれか一つです。

  1. 友達だった部員 SqS_qTqT_q が絶交する。互いに友達ではなかったことになり、相手を介して知っていた「知り合い」は知らなかったことになる。これに伴って、グループは再構成される。(分裂することがある)
  2. 部員 SqS_qTqT_q が知り合いなら 「 Yes 」 , 知り合いでないなら 「 No 」 を出力する。
  3. 部員 XqX_q の所属するグループのメンバーを全員出力する。このとき、部員の番号の小さい順に出力する必要がある。
  4. 部員 XqX_q の所属するグループの人数を出力する。

BONUS!

上記だけでは 120 点ですが、つぎの「できごと」も処理した場合、満点(150点)が得られます。

  1. 部員 SqS_qTqT_q が友達になる。知り合いも増える。これに伴って、グループは再編成される。なお、この二人は新たな友達ではなく絶交していたものが仲直りしているという可能性もある。

制約

  • 2N2000002\leq N\leq 200000
  • 1Mmin(200000,NC2)1 \leq M \leq min(200000, {}_N \mathrm{C}_2 )
  • 1Ai<BiN1 \leq A_i < B_i \leq N (1iM)(1 \leq i \leq M)
  • (Ai,Bi)(Aj,Bj)(A_i, B_i) \neq (A_j, B_j) (ij)(i \neq j)
  • 1Q2000001 \leq Q \leq 200000
  • できごと 125 について、
    • 1Sq<TqN1 \leq S_q < T_q \leq N (1qQ)(1 \leq q \leq Q)
  • できごと 34 について、
    • 1XqN1 \leq X_q \leq N (1qQ)(1 \leq q \leq Q)
  • できごと 1 について、
    • 発生前、 SqS_qTqT_q は友達関係にある
  • できごと 3 について、
    • 発生回数は 80 回以下
  • できごと 5 について、
    • 発生回数は 3 回以下
    • 発生前、 SqS_qTqT_q は友達関係にはない
  • 入力はすべて整数

小課題

  1. (30点) N6N \leq 61Q1001 \leq Q \leq 100 、できごと 345 は起こらない
  2. (20点) N,M300N, M \leq 3001Q1001 \leq Q \leq 100 、できごと 45 は起こらない
  3. (70点) できごと 5 は起こらない
  4. (30点) できごと 5 が起こる

入力

N MN~M
A1 B1A_1~B_1
A2 B2A_2~B_2
\vdots
AM BMA_M~B_M
QQ
event1event_1
event2event_2
\vdots
eventQ event_Q~

eventqevent_q (1qQ)(1 \leq q \leq Q) は、次のように与えられる。

  1. 1  Sq  Tq1 \; S_q \; T_q
  2. 2  Sq  Tq2 \; S_q \; T_q
  3. 3  Xq3 \; X_q
  4. 4  Xq4 \; X_q
  5. 5  Sq  Tq5 \; S_q \; T_q

出力

できごと 2 3 4 の結果を改行区切りで出力してください。

  • 2: Yes または No を結果に応じて出力
  • 3: XqX_q と同じグループに所属する部員の番号を昇順に空白区切りで出力
  • 4: XqX_q と同じグループに所属する部員の人数を出力

N MN~M
A1 B1A_1~B_1
A2 B2A_2~B_2
\vdots
AM BMA_M~B_M
QQ
event1event_1
event2event_2
\vdots
eventQ event_Q~

入出力例

入力例 1

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

出力例 1

1 2 3 4 
Yes
1 3 

入力例 2

8 4
1 2
2 3
2 4
7 8
15
2 1 4
3 3
1 7 8
4 7
5 2 5
3 3
1 2 4
3 3
1 2 3
3 1
5 2 3
5 3 5
3 4
1 2 3
3 1

出力例 2

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