筑波大学プログラミングコンテスト2023
コンテスト日時
2023/09/03 (Su) 14:00 - 17:00

K - RGB Triplets 2

Benihuki
3
s
1024
MB
1200

問題文

$N$ 頂点の木が与えられます。頂点には $1$ から $N$ までの番号が付いており、$i$ 番目の辺は頂点 $u_i$ と頂点 $v_i$ を結んでいます。また、全ての頂点には色が塗られており、頂点 $i$ は色 $C_i$ (ただし $C_i$ は RGB のいずれか) で塗られています。
次の 2 つの条件を共に満たす整数の組 $(i, j, k)$ $(1 \leq i < j < k \leq N)$ の数を求めてください。

  • $C_i ≠ C_j$ かつ $C_j ≠ C_k$ かつ $C_k ≠ C_i$ である
  • 頂点 $i$ から木上の辺をたどって頂点 $j$ へ到達するまでに通る辺の本数の最小値を $d(i, j)$ としたとき、$d(i, j) = d(j, k) = d(k, i)$

制約

  • $1 \leq N \leq 3 \times 10^5$
  • $1 \leq u_i < v_i \leq N$ $(1 \leq i \leq N-1)$
  • 与えられるグラフは木である
  • $C = C_1C_2\ldots C_N$ は R, G, B のみからなる長さ $N$ の文字列である

部分点

この問題には、部分点が設定されている。満点は $1200$ 点である。

  • $1 \leq N \leq 300$ を満たすデータセットに正解した場合は、$150$ 点が与えられる
  • $1 \leq N \leq 3000$ を満たすデータセットに正解した場合は、上記に加えて $250$ 点が与えられる
  • $1 \leq N \leq 30000$ を満たすデータセットに正解した場合は、上記の2つに加えて $300$ 点が与えられる
  • 追加の制約の無い全てのデータセットに正解した場合は、上記の3つに加えて $500$ 点が与えられ、$1200$ 点(満点)となる

入力

入力は以下の形式で標準入力から与えられる。

$N$
$C$
$u_1$ $v_1$
$u_2$ $v_2$
.
.
.
$u_{N-1}$ $v_{N-1}$

出力

答えを出力せよ。

入力例 1
6 RGBRGB 1 2 1 3 1 4 2 5 2 6
出力例 1
2
入力例 2
2 RG 1 2
出力例 2
0

条件を満たす $(i,j,k)$ の組が1つも存在しないこともあります。

入力例 3
10 GGRRBBBRGB 1 6 1 9 2 10 3 5 3 7 4 8 5 6 8 9 9 10
出力例 3
2
提出
C++23 (g++ 12.2.0)