競プロキャンプ2026関東
コンテスト日時
2026/06/07 (Su) 09:15 - 11:15

M - Highway and General Road

ผักชี
8
s
1024
MB
100

問題文

  • 正整数 $N$ , $M$ ($N\leq M$)
  • $1\leq i\leq N-1$ について、整数の集合 $\lbrace U _ i, V _ i\rbrace$
  • $1\leq i\leq M-1$ について、整数の集合 $\lbrace X _ i, Y _ i\rbrace$
  • $1$ 以上 $M$ 以下の整数からなる、長さ $N$ の数列 $F=(F _ 1,F _ 2,\ldots ,F _ N)$

が与えられます。ただし、以下の条件が満たされます。

  • $1,2,\ldots ,N$ を頂点、 $\lbrace U _ i, V _ i\rbrace$ ($1\leq i\leq N-1$) を辺とする無向グラフは木である。
  • $1,2,\ldots ,M$ を頂点、 $\lbrace X _ i, Y _ i\rbrace$ ($1\leq i\leq M-1$) を辺とする無向グラフは木である。

集合 $G$ を、 $G=\left\lbrace \lbrace i,i+1\rbrace \mid 1\leq i\leq M-1 \right\rbrace \cup \left\lbrace \lbrace X _ i, Y _ i\rbrace \mid 1\leq i\leq M-1 \right\rbrace$ で定めます。

$q=1,2,\ldots ,Q$ に対してクエリ $(p _ q,f _ q)$ が与えられるので、順に処理してください。

  • $F _ {p _ q}$ の値を $f _ q$ に変更した後、以下の条件がすべて満たされるなら Yes , 満たされないならば No を出力してください。ただし、このクエリによる $F _ {p _ q}$ の値の変更は、以降のクエリにわたって保持されるものとします。

    • $i\neq j$ ならば $F _ i\neq F _ j$ である。
    • $1\leq i\leq N-1$ について、 $\lbrace F _ {U _ i}, F _ {V _ i}\rbrace\in G$ が成り立つ。

制約

  • $2 \leq N \leq 200{,}000$
  • $2 \leq M \leq 200{,}000$
  • $N \leq M$
  • $1 \leq Q \leq 200{,}000$
  • $1\leq F _ i\leq M$ ($1\leq i\leq N$)
  • $1,2,\ldots ,N$ を頂点、 $\lbrace U _ i, V _ i\rbrace$ ($1\leq i\leq N-1$) を辺とするグラフは木である。
  • $1,2,\ldots ,M$ を頂点、 $\lbrace X _ i, Y _ i\rbrace$ ($1\leq i\leq M-1$) を辺とするグラフは木である。
  • $1\leq p _ q\leq N$ ($1\leq q\leq Q$)
  • $1\leq f _ q\leq M$ ($1\leq q\leq Q$)
  • 入力はすべて整数

部分点

上記の制約に加えて以下の制約を満たすテストケースすべてに正解した場合、部分点として $50$ 点が与えられる。

  • $U _ i = i$ ($1 \leq i \leq N-1$)
  • $V _ i = i + 1$ ($1 \leq i \leq N-1$)

入力

$N$
$U _ 1$ $V _ 1$
$U _ 2$ $V _ 2$
$\vdots$
$U _ {N-1}$ $V _ {N-1}$
$M$
$X _ 1$ $Y _ 1$
$X _ 2$ $Y _ 2$
$\vdots$
$X _ {M-1}$ $Y _ {M-1}$
$F _ 1$ $F _ 2$ $\ldots$ $F _ N$
$Q$
$p _ 1$ $f _ 1$
$p _ 2$ $f _ 2$
$\vdots$
$p _ Q$ $f _ Q$

出力

クエリごとに、 Yes または No を $1$ 行に出力してください。

入力例 1
3 1 2 2 3 5 1 2 2 3 3 4 4 5 2 5 4 5 2 3 1 5 2 4 3 3 1 3
出力例 1
Yes No No Yes No

$G=\lbrace \lbrace 1,2 \rbrace, \lbrace 2,3 \rbrace, \lbrace 3,4 \rbrace, \lbrace 4, 5 \rbrace \rbrace$ です。

$1$ 個めのクエリ : $F=(2,3,4)$ です。 $i\neq j$ ならば $F _ i\neq F _ j$ が成り立ち、 $\lbrace 2,3 \rbrace \in G$ , $\lbrace 3,4 \rbrace \in G$ なので、 Yes を出力してください。

$2$ 個目のクエリ : $F=(5,3,4)$ です。 $i\neq j$ ならば $F _ i\neq F _ j$ が成り立ちますが、 $\lbrace 5,3 \rbrace \notin G$ なので、 No を出力してください。

$3$ 個目のクエリ : $F=(5,4,4)$ です。 $F _ 2 = F _ 3$ なので、 No を出力してください。

入力例 2
5 1 2 2 3 2 4 4 5 9 1 9 2 6 2 7 3 8 4 9 5 7 5 8 5 9 8 9 7 2 4 15 1 6 4 8 3 5 5 3 1 1 5 7 4 4 5 8 5 7 4 8 3 2 5 4 5 5 5 6 1 4
出力例 2
No No No No Yes Yes No No No Yes No No No No No

このテストケースは、部分点の採点には使用されません。

提出
C++23 (g++ 12.2.0)