alexjercan/bugnet huggingface dataset:
F: 風呂がオーバーフロー - Overflow of Furo -

物語

温泉宿・パロは自慢の温泉に全ての情熱を注いでおり、風呂のプロフェッショナルを集めている。
風呂のプロたちは主に温泉の配管を管理しており、複数の源泉から1つの大浴場へと繋がる、複雑に入り組んだ配管網を管理・調整している。

配管網の管理・調整業務もなかなかに大変なのだが、風呂のプロたちはその合間を縫って、さらに多くの湯を浴槽へと供給できるよう日々努力を積み重ねていた。
結果、風呂のプロたちは「1本だけ配管をオーバーフローさせることができる」という荒技を習得した。
すなわち、自由に配管1本を選び、その配管の湯量の制限をなくすことができるようになったのだ。

今まで最大湯量を実現する配管網の設定をあなたのプログラムに依存していた風呂のプロたちは、この技術を使ってさらに浴槽への供給湯量を増やすにはどうすればよいか、あなたに再びプログラムを書くよう依頼してきた。

問題

1つの浴槽、K個の源泉、N個の結合点を含む配管網がある。
配管網はM本の配管からなり、配管1つ1つは流すことのできる湯量の制限を持つ。
配管それぞれは湯を流す方向が決められていないので、自由に決めて使ってよい。
N個の結合点では何本かの配管から流れてきた湯をそれ以外の何本かの配管へと自由な配分で流すことができる。
すべての源泉、および浴槽は一部の配管の端点になっており、源泉からの湯量、および結合点での湯量を調整することで源泉から浴槽へと湯を供給している。

M個の配管のうち1本だけオーバーフローさせる、すなわち流せる湯量を無限に増やすことで浴槽に供給できるようになる最大湯量はいくらか。
ただし、最大供給湯量を無限に増やすことができる場合も考えられるが、その場合は風呂がオーバーフローしてしまうので、"overfuro"と出力すること。

入力形式

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

K N M
a_1 b_1 c_1
...
a_M b_M c_M

入力は全て整数からなる。
最初の行では源泉の数K、結合点の数N、配管の数Mが与えられる。
続くM行のうちi行目には、i番目の配管の情報を表す3つの整数 a_i, b_i, c_i が与えられる。
これはi番目の配管の両端点がそれぞれa_iとb_iであり、湯量の制限がc_iであることを示す。
ここで、配管の端点 x が0のときは大浴場、1からKまでのときは x 番目の源泉、K+1からK+Nまでのときは x − K 番目の結合点であることを表す。

制約

1 ≤ K

0 ≤ N

N+K ≤ 100

1 ≤ M ≤ (N+K+1)(N+K)/2

0 ≤ a_i, b_i ≤ K+N

a_i ≠ b_i

1 ≤ c_i ≤ 5{,}000

同じ2端点を持つ配管は2つ以上存在しないことが保証される。

与えられる配管網は、配管をオーバーフローさせることなく最低1以上の湯を源泉から浴槽に供給できることが保証される。

出力形式

1本だけ配管をオーバーフローさせて源泉から浴槽への供給湯量を最大化するときの最大供給湯量を1行に出力せよ。
ただし、最大湯量を無限に増やせるときは、"overfuro"と1行に出力せよ。

入力例1

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

出力例1

8

入力例2

2 3 7
1 0 8
2 0 9
3 0 3
0 4 5
5 0 2
1 3 2
2 4 9

出力例2

overfuro

入力例3

1 1 2
0 2 1
1 2 1

出力例3

1

入力例4

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

出力例4

overfuro
G: 最小包含矩形 - Minimum Enclosing Rectangle -

物語

みんなぁ、こんにちは！　八森中ぷろこん部の藍座あいりだよぉ。
突然だけど、あいりがこの前解けなかった問題をみんなに解いて欲しいんだぁ～。
この前部活でICPC2010のA問題を解いたんだけど、その時の問題が難しかったんだぁ。

あ、ICPCについて説明しなきゃ！　ICPCは、い、いんたーなしょなる……ちゅうがくせい……ぷろぐらみんぐ……こんてすとの略で、日本語に直すと、国際中学生対抗プログラミングコンテストらしいよぉ！ あいりにはちょっとむずかしい言葉がいっぱいだよぉ。
あいり達はこの世界大会に出るために毎日頑張ってるんだぁ！

部活から帰った後お姉ちゃんにも聞いてみたんだけど、「わ、わからないわ……A問題からわからないなんて……お姉ちゃん失格ね……」って落ち込んじゃって……
でも、「『プロ』の人たちが一杯集まるところを知ってるの、お姉ちゃんちょっと連絡してみるわ。あいり、そこで聞いてみなさい！」って言ってここの合宿を教えてもらったんだぁ～ 。
ここに集まる『プロ』のみんなには簡単かもしれないけど……この問題を解いてほしいの！

問題

長さが1の正方形がN個、2次元平面上にある。これらN個の正方形を全て内包する、最小面積の長方形を求めよ。

入力形式

入力はN行からなる。

N
n_1 d_1
n_2 d_2
n_3 d_3
...
n_{N − 1} d_{N − 1}

最初の行には、正方形の個数Nが与えられる。
以下N − 1行は、正方形の置き方を表している。そのうち上からi行目は、空白区切りで1つの整数n_{i}と1つの文字d_{i}が与えられる。これはi番目の正方形の置き方を指示している。ここで正方形の番号付けは、最初の正方形を0番目とし、その後置いた順番に1, 2, ..., N − 1と番号付けられるものとする。0番目の正方形に対する置き方の指示はない。
i番目の正方形に対する置き方の指示n_i, d_iは、i番目の正方形をn_i番目の正方形に対してd_iで示される方向に隣接して置くことを指示する。
ここで、n_iはi未満の非負整数である。また、d_iは0,1,2,3のいずれかの値をとり、それぞれd_iの値が、0ならば左側、1ならば下側、2ならば右側、3ならば上側を表す。
以下にそれぞれの入力例に対応した最終的な正方形の配置を図示している。左から入力例1、入力例2、入力例3、入力例4の最終的な正方形の配置となっている。図中の番号は正方形の番号に相当する。また、図中の緑線は求める最小面積の長方形を示している。

制約

入力はすべて整数

1 ≤ N ≤ 100,000

1 ≤ n_i < i (1 ≤ i < N)

0 ≤ d_i ≤ 3 (1 ≤ i < N)

既に正方形が置かれている位置に、新たな正方形を置くような指示は与えられない。

出力形式

与えられたN個の点を全て包含する最小面積の長方形の面積を1行で出力する。
出力には10^{−5}以上の誤差を含んではならない。

入力例1

1

出力例1

1

入力例2

5
0 0
0 1
0 2
0 3

出力例2

8

入力例3

12
0 0
1 0
2 0
3 1
4 1
5 1
6 2
7 2
8 2
9 3
10 3

出力例3

16

入力例4

10
0 2
1 2
2 2
3 2
2 1
5 1
6 1
7 1
8 1

出力例4

30
A: トーナメント

問題

AOR イカちゃんとあなたは、トーナメント形式の卓球大会シングルスの部に偵察に来た。
全ての試合を録画したい AOR イカちゃんのために、あなたはこの大会で行われる試合数を求めてあげることにした。

この大会には $N$ 人の選手が参加しており、それぞれ $0, \dots , N - 1$ の背番号を持っている。
そのうち、 $M$ 人の選手が棄権し、試合には出場しなかった。

この大会の試合数は、以下のルールに基いて決定される。

シード選手は存在せず、任意の出場者が優勝するために必要な勝利回数は一定である。

対戦相手が不在の場合は試合を行わず、出場した選手が勝利する。試合数にはカウントされない。

優勝者が決まった段階で大会は終了する。

一度試合に負けた人が再び試合をすることはない。つまり敗者復活戦や 3 位決定戦などは行わない。

なお、卓球台が 1 台しか無いため異なる試合が同時に行われることはなく、また各試合では必ず勝者が決まる (引き分けとなることはない)。

なお、トーナメントの定義は次のとおりである。
トーナメントは高さ $L = \log_2 N$ の完全二分木で表され、葉にあたる各頂点には参加者の背番号が書き込まれている。
根の深さを 0 とすると、 $i$ 回戦 ($1 \le i \le L$) では、
深さ $L - i$ の各頂点の子に書かれた番号の選手同士が試合を行い、その勝者の背番号をその頂点に書き込む。

制約

$2 \le N \le 2^8$

$0 \le M \le N - 1$

$0 \le a_i \le N - 1 \ (0 \le i \le M - 1)$

$N$ は 2 の累乗である。

$a_i \ (0 \le i \le M - 1)$ は相異なる

入力形式

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

$N \ M$

$a_1$

$\vdots$

$a_M$

1 行目には、参加者を表す整数 $N$ 、参加者のうち棄権した者の人数を表す整数 $M$ が与えられる。

続く $M$ 行には、棄権して出場しなかった選手の番号を表す整数 $a_i$ が与えられる。

出力

この大会が終了するまでに行われる試合数を 1 行で出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

2 0

サンプル出力 1

1

最初の試合で優勝者が決まる。

サンプル入力 2

4 2
2
3

サンプル出力 2

1
B: 重さの範囲

問題

重さの異なる $N$ 色のボールがキューにたくさん入っています。キューには、先頭から
$1,2,3, \dots ,N-1,N,1,2,3, \dots ,N-1,N,1,2,3, \dots$ というふうに昇順にボールが並んでいて、
色 $N$ のボールの後ろにはまた色 $1$ のボールから順に入っています。
同じ色のボールはそれぞれ同じ重さであり、色 $i$ のボールの重さは $A_i$ です。

この状態から、キューの先頭からボールを $M$ 個取り出し、これを 1 つのグループとする作業を繰り返します。
そして、キューから取り出した各色のボールの総数がすべて等しくなったときにグループを作る作業をやめます。
なお、キューには十分な数のボールが入っており、グループを作る作業をやめるまでにキューの中身が空になることはありません。

たとえば、
$N=8, M=2$ のとき、{色1,色2}, {色3,色4}, {色5,色6}, {色7,色8} の 4 グループができます
(このとき各色のボールは 1 つずつ存在する)。
$N=4, M=3$ のとき、{色1,色2,色3}, {色4,色1,色2}, {色3,色4,色1}, {色2,色3,色4} の $4$
グループができます (このとき各色のボールはそれぞれ3つずつ存在する)。

このとき、各グループにおいて、
含まれるボールの重さの最大値と最小値の差をそのグループの重さの範囲と呼ぶことにします。
各グループの重さの範囲の総和を出力してください。

制約

$1 \le N \le 1000$

$1 \le M \le N$

$0 \le A_i \le 100$

入力は全て整数である

入力形式

入力は以下の形式で与えられます。

$N \ M$

$A_1 \cdots A_N$

出力

答えを 1 行で出力してください。また、末尾に改行も出力してください。

サンプル

サンプル入力 1

8 2
23 61 57 13 91 41 79 41

サンプル出力 1

170

重さの範囲の総和は $38+44+50+38=170$ となります。

サンプル入力 2

4 3
72 46 67 5

サンプル出力 2

222

重さの範囲の総和は $26+67+67+62=222$ となります。

サンプル入力 3

4 2
1 2 3 5

サンプル出力 3

3

重さの範囲の総和は $1+2=3$ となります。
C: Fractal Tree

問題

AORイカちゃんは、フラクタルな(自己相似的な)構造を持つ根付き木が好きである。
$N$ 頂点から成る重み付き根付き木 $T$ を用いて、以下のようなフラクタル構造を持つ根付き木 $T'$ を表現することを考える。

$T'$ は、$T$ の各頂点 $x$ に対して、$x$ を根として $T$ と同様の木構造 (コストも同じ) を持つ木を付け加えたものである。

$T'$の根は $T$ のものと同じものである。

こうして表現される木は例えば下図のようになる。

AOR イカちゃんは、$T'$ に対して深さ優先探索をしようとしているが、全ての頂点を辿ると時間がとてもかかることに気づいた。
そこで、深さ優先探索時の遷移の際に確率 $p$ で遷移し、確率 $1-p$ で遷移しない方針で深さ優先探索を行い、いくつかのノード訪問をサボることにした。
$T$ と確率 $p$ が与えられるので、$T’$ に対して深さ優先探索を行う際に辿る全ての辺のコストの和の期待値を求めよ。
$T$ の情報は頂点数 $N$ と $N-1$ 本の辺の情報で与えられ、頂点 $1$ が根である。
各頂点は $1,2,\dots,N$ とラベリングされており、 $i \ (1 \le i \le N-1)$ 番目の辺は頂点 $x_i$ と $y_i$ をコスト $c_i$ で結んでいる。
今回の問題で扱う、確率 $p$ で子に遷移する深さ優先探索の非決定的アルゴリズムは以下のように表現される。
出力される $\mathrm{answer}$ が辿る辺のコストの総和である。

空のスタック $S$ を用意する。

$\mathrm{answer}=0$ とする

$S$ に $T'$ の根頂点をプッシュする。

$S$ の先頭の要素を取り出し、これを $x$ とする。

$x$ の各子 $c$ に対し、それぞれ確率 $p$ で次の操作を行い、確率 $1-p$ で何もしない。

$S$ に頂点 $c$ を追加する。そして $\mathrm{answer}$ に $x$ から $c$ に繋がっている辺の重みを加える。

Sが空でなければ、3. に遷移する。

$\mathrm{answer}$ を出力する。

制約

$2 \le N \le 10^5$

$0 \le p \le 1.0$ (小数点第 2 位まで与えられる。)

$1 \le x_i,y_i \le N$

$1 \le c_i \le 1000$

$c_i$ は整数である

与えられるグラフは $N$ 頂点の根付き木である。すなわち、頂点 $N$、辺数 $N-1$、連結という性質を持つグラフであり、頂点 $1$ が根である。

入力形式

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

$p$

$N$

$x_1 \ y_1 \ c_1$

$\vdots$

$x_{N-1} \ y_{N-1} \ c_{N-1}$

出力

答えを 1 行で出力せよ。相対誤差または絶対誤差が $10^{-6}$ 以下なら AC となる。また、末尾に改行も出力せよ。

サンプル

サンプル入力1

0.75
4
1 2 1
2 3 3
3 4 10

サンプル出力1

24.8569335938

サンプル入力2

0.75
4
1 2 1
1 3 3
3 4 10

サンプル出力2

35.0390625

問題文の図の木を与える例である。
D: パスワード

問題

AOR イカちゃんは英小文字のみからなる強力なパスワードを作りたいと思っています。
友達から $N$ 個の危険なパスワードの例を教えてもらった AOR イカちゃんは、
以下の条件を全て満たすようなパスワードを作ることにしました。

長さは1文字以上である。

どの危険なパスワードの、どの連続した部分文字列とも異なる。

1, 2 の条件を満たした中で、最も短い文字列である。

1,2,3の条件を満たした中で、辞書順に並べたとき先頭に来る文字列である。

AOR イカちゃんに代わって強力なパスワードを生成するプログラムを書いてください。

入力

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

$N$

$S_1$

$\vdots$

$S_N$

1 行目には、文字列の数を表す整数 $N$ が与えられる。

2 行目からの $N$ 行には、文字列 $S_i$ が与えられる。

$|S_i|$ とは文字列の長さであり、1 文字以上である。

$1 \le N \le 100,000$ を満たす。

$1 \le \sum_{1\le i \le N} |S_i| \le 400,000$ を満たす。

文字列は英小文字のみを含む。

出力

答えを 1 行で出力せよ。また、末尾に改行も出力せよ。

サンプル

サンプル入力 1

5
password
login
admin
root
master

サンプル出力 1

b

サンプル入力 2

3
abcdefghijklmnopqrstuvwxy
qwertyuiopasdfghjklxcvbnm
qawsxedcrfvtgbyhnujmikolp

サンプル出力 2

z

サンプル入力 3

1
abcdefghijklmnopqrstuvwxyz

サンプル出力 3

aa
E: 卒業式

背景

ある日 Y さんはプログラミングコンテストに参加するため，会場がある大学に向かいました．
ところが大学に着くと人がたくさん！なんと今日は卒業式だったのです．
会場に向かおうにも人に押し流されてしまい，自分の進みたい方向に進むことすらできません．
人混みから抜け出すために，Y さんは今いる場所から少しでも遠くに行きたいと考えました．
そこで Y さんは状況を以下のような問題として定式化し，競技プログラミングを役に立てることにしました．

なお，以下の問題文では Y さんは点 $P$ としてモデル化されています．

問題

座標平面上の原点に点 $P$ が置かれている．
点 $P$ を動かし，できるだけ原点からのマンハッタン距離が遠い位置に移動させたい．

はじめに，文字列 $S = s_1s_2 \cdots s_{|S|}$ ($|S|$ は $S$ の文字数) が与えられる．
点 $P$ の移動は，文字列 $S$ の先頭から文字を 1 文字ずつ読み込むことで行う．
文字列 $S$ は文字 'U', 'L', 'D', 'R' からなる．
それぞれの文字を読み込んだとき，点 $P$ の移動前の座標を $(x, y)$ とすると，
移動後の点 $P$ の座標はそれぞれ $(x, y+1),\ (x-1, y),\ (x, y-1),\ (x+1, y)$ となる．

各文字を読み込む直前に，魔法をかけるか否かを選択することができる．
魔法には魔法 1 と魔法 2 の二種類がある．文字列 $S$ の $i$ 番目の文字を $s_i$ とすると，
$s_i$ を読み込む直前に魔法をかけたときの変化は以下の通りである．

魔法 1 をかけたとき: 全ての $s_j \ (i \le j \le |S|)$ に対し，'U' を 'D' に，'D' を 'U' に置換する．

魔法 2 をかけたとき: 全ての $s_j \ (i \le j \le |S|)$ に対し，'L' を 'R' に，'R' を 'L' に置換する．

直感的には，魔法 1 ではその後の上下の扱いを反転させることができ，魔法 2 では左右の扱いを反転させることができる．
ある文字を読み込む前にかける魔法の回数は複数回でも構わない．また，両方の魔法を続けてかけてもかまわない．
ただし，文字列 $S$ の文字をすべて読み終えるまでに魔法をかけられる回数は，合計 $K$ 回までである．
詳細はサンプルを参照されたい．

文字列 $S$ の文字をすべて読み終えた後の点 $P$ の座標を $(x',y')$ とするとき，$|x'| + |y'|$
の最大値を求めよ．

制約

$1 \le |S| \le 2000$

$1 \le K \le 2000$

入力

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

$S$

$K$

出力

$|x'| + |y'|$ の最大値を 1 行で出力せよ．また、末尾に改行も出力せよ.

サンプル

サンプル入力 1

RRLUDDD
2

サンプル出力 1

7

3 文字目を読み込む直前に魔法 2 をかけると，文字列 $S$ は "RRRUDDD" となる．
続いて 5 文字目を読み込む直前に魔法 1 をかけると，文字列 $S$ は "RRRUUUU" となる．
すべての文字を読み終えた後の点 $P$ の座標は $(3, 4)$ となり，
原点からのマンハッタン距離は 7 である．これはこの例の最大値である．

サンプル入力 2

LULLLUULLU
1984

サンプル出力 2

10

1 回も魔法をかけなかった場合，$x’ = -6, \ y’ = 4$ となり，$|x’| + |y’| = 10$ である．

サンプル入力 3

DRDLUDD
1

サンプル出力 3

5

サンプル入力 4

LURRRLUDLL
1

サンプル出力 4

6
F: カードゲーム

問題

カードを使ったゲームを $Q$ 回行います。
カードには $1 \cdots N$ の数が書かれており、各数が書かれたカードはゲームを行うのに十分な枚数があります。
$i$ 回目のゲームでは、はじめに手札として 2 枚のカードが配られます。
それぞれのカードに書かれている数字は $x_i$ と $y_i$ です。
カードはルールに従って交換することができます。
$j$ 番目 $(1 \le j \le M)$ のルールでは、カード $a_j$ を手数料 $c_j$ 円で別のカード $b_j$ に交換することができます。
各ルールは何回でも用いることができます。また、手数料が足りなくて交換できない場合はありません。
最後に、手札のカードの数字を $R$ で割ったあまりが等しい時、報酬として $z_i$ 円受け取ります。
異なる場合報酬は $0$ 円です。

$Q$ 回ゲームを終えた時に増やすことのできるお金の最大値を求めてください。

制約

$1 \le N \le 10^5$

$0 \le M \le \min(2 \times 10^5, N\times(N-1))$

$2 \le R \le 10$

$1 \le Q \le 10^5$

$1 \le a_j, b_j \le N$

$a_j \neq b_j$

$0 \le c_j \le 10^5$

$1 \le x_i, y_i \le N$

$0 \le z_i \le 10^5$

入力

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

$N \ M \ R \ Q$

$a_1 \ b_1 \ c_1$

$\vdots$

$a_M \ b_M \ c_M$

$x_1 \ y_1 \ z_1$

$\vdots$

$x_Q \ y_Q \ z_Q$

出力

ゲームを $Q$ 回行ったときに増やすことのできるお金の最大値を 1 行で出力してください。また、末尾に改行も出力してください。

サンプル

入力例 1

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

出力例 1

7

1 回目のゲームではカード 1 を手数料 1 でカード 2 に交換すると手札のカードを 2 で割った時のあまりがどちらも 0 となり、得られる報酬は 5 となります。
2 回目のゲームではすでに 2 で割ったときのあまりがどちらも 0 であり、得られる報酬は 3 となります。
2 回のゲームの結果、増やせるお金は $5-1+3=7$ です。

入力例 2

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

出力例 2

0

カードの交換での手数料が報酬よりも多いので、交換を行わないのが最適です。
G: 雨降りバス乗り換え

背景

今日は AOR イカちゃんにとって初となるデートの日だ。
AOR イカちゃんは駅からバスを乗り継ぎ、待ち合わせ場所のバス停に向かう予定である。

AOR イカちゃんが駅に着いた時、不幸にも雨が降ってきた。当初予定していた経路ではバスの待ち時間で濡れてしまい、せっかく整えた身だしなみが台無しになってしまう可能性がある。

そこで、バスの待ち時間が最も少なくなるような経路でバス停まで向かうことにした。
AOR イカちゃんは、待ち合わせ場所のバス停に着くまでにどの程度濡れるのか心配している。

問題

AOR イカちゃんは時刻 $0$ に $S$ 番目のバス停におり、そこから $G$ 番目のバス停まで行きたいと考えている。

バス停の個数 $N$ と、異なるバス停同士を繋ぐ $M$ 個の経路 (※) が与えられる。
バス停には、それぞれ $1, \dots, N$ の番号がふられている。

各経路は、出発地 $u$ 、目的地 $v$ 、出発時刻 $t$ 、所要時間 $c$ の $4$ つの値からなる。
時刻 $t$ に出発地 $u$ にいればバスに乗ることができ、時刻 $t + c$ に目的地 $v$ へ到着する。

バスに乗っていない間、 AOR イカちゃんは雨に濡れてしまう。
雨にぬれる時間が最小となる経路を通り $G$ 番目のバス停へ向かう時、時刻 $0$ から $G$ 番目のバス停に着くまでの間に雨に濡れた時間の合計を出力せよ。

(※) グラフ理論の用語における経路とは頂点と辺の列であるが，ここでは辺の意味で使われていることに注意してほしい。

制約

$2 \le N \le 10^5$

$1 \le M \le 2 \times 10^5$

$1 \le S , G \le N$

$1 \le u_i , v_i \le N$

$0 \le t_i \le 10^5$

$1 \le c_i \le 10^5$

$S \neq G$

$u_i \neq v_i$

出発地 $u$ と目的地 $v$ が同じであるような経路は存在しない。

出発地 $u$ と目的地 $v$ を結ぶ経路は複数存在する場合がある。

バスの乗り降り、乗り換えに時間はかからないものとする。

$G$ 番目のバス停へ到着する時間は問わない。

$S$ 番目のバス停から $G$ 番目のバス停へ到着できることは保証されている。

入力

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

$N \ M \ S \ G$

$u_1 \ v_1 \ t_1 \ c_1$

$\vdots$

$u_M \ v_M \ t_M \ c_M$

出力

雨に濡れた最小の時間を 1 行で出力せよ。また、末尾に改行も出力せよ。

サンプル

入力例 1

2 2 1 2
1 2 10 100
1 2 5 500

出力例 1

5

到着時間が遅くても、できるだけ雨に濡れない経路を選ぶ。

入力例 2

3 2 1 3
1 2 0 123
2 3 123 500

出力例 2

0

乗り換えに時間はかからない。
H: ジャンプパーティ

問題

とあるダンスホールで $N$ 人の参加するダンスパーティーが行われる。
そのダンスホールは縦方向に $H$ 個、横方向に $W$ 個のグリッドに分けられており、
左上を $(0,0)$、上から $r$ マス、左から $c$ マス目のグリッドの座標を $(r,c)$ と表す。
$i$ 番目の参加者の初期位置は $(R_i, C_i)$ であり、$(i,j)$ のグリッドには $(r_{ij}, c_{ij})$ が書かれている。

各参加者は、無限に続く音楽に合わせて次のように同時に移動を行う。

その時にいる座標が $(i,j)$ のとき、$(r_{ij}, c_{ij})$ へジャンプで移動する。

それぞれのグリッドは狭く、2 人以上の参加者が同時に同じグリッドに移動すると衝突してしまう。ただし、空中で衝突することは無いとする。
これを聞いたあなたは、ジャンプ後に 2 人以上の参加者が衝突してしまわないかと心配になった。
そこで、衝突が起こる可能性があるか、あるならば何回目のジャンプの後に衝突が起こるかを求めることにした。

制約

$1 \le H,W \le 500$

$0 \le N \le H \times W$

$0 \le r_{ij} < H \ (0 \le i < H, 0 \le j < W)$

$0 \le c_{ij} < W \ (0 \le i < H, 0 \le j < W)$

$0 \le R_i < H \ (0 \le i < N)$

$0 \le C_i < W \ (0 \le i < N)$

参加者の初期位置は相異なる

入力形式

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

$H \ W \ N$

$r_{00} \ c_{00} \ \cdots \ r_{0 \ W-1} \ c_{0 \ W-1}$

$\vdots$

$r_{H-1 \ 0} \ c_{H-1 \ 0} \ \cdots \ r_{H-1 \ W-1} \ c_{H-1 \ W-1}$

$R_0 \ C_0$

$\vdots$

$R_{N-1} \ C_{N-1}$

この問題では入力ファイルが非常に大きくなることがあることに注意せよ。
C++ ならこのページを参考にすると良いかもしれない。

出力

衝突が起こる場合は何回目のジャンプの後に起こるかを 1 行で出力せよ。
そうでない場合は -1 を出力せよ。
また、末尾に改行を出力せよ。

サンプル

サンプル入力 1

2 2 2
1 0 0 1
0 0 1 0
0 0
0 1

サンプル出力 1

-1

サンプル入力 2

2 2 2
1 0 0 1
0 0 1 0
0 0
1 1

サンプル出力 2

1
I: Islands Survival

問題

$N$ 頂点 $M$ 辺の単純連結無向グラフがある．
頂点には $1, 2, \dots, N$ と番号がつけられている．
辺には $1, 2, \dots, M$ と番号がつけられており，辺 $i$ は頂点 $a_i$ と $b_i$ をつないでいる．
また，辺 $i$ は時刻 $t_i$ に消える．どの辺も通過するために単位時間がかかる．

あなたは最初，時刻 0 において頂点 1 にいる．
あなたは最適に行動することで，時刻 $T$ までに得られるスコアを最大化したい．
スコアは最初 0 であり，イベントは以下に従って起きる．

今の時刻 $t'$ が $t' \geq T$ を満たすならば終了する．そうでなければ 2. へ．

$t_i = t'$ なるすべての辺 $i$ が消える．

あなたがいる頂点を $v$ とするとき，頂点 $v$ を含む連結成分に含まれる頂点数を $x$ とすると，スコアに $x$ が加算される．

あなたは頂点 $v$ と隣接している頂点のいずれかに移動するか，頂点 $v$ に留まる．ただし前者の場合，既に消えた辺を使うことはできない．

$t' \gets t' + 1$ として 1. へ．

得られるスコアの最大値を求めよ．

制約

$2 \le N \le 10^5$

$N - 1 \le M \le \min(2 \times 10^5, N(N - 1) / 2)$

$1 \le T \le 10^5$

$1 \le a_i , b_i \le N$

$1 \le t_i \le T$

与えられるグラフは単純かつ連結．

入力形式

入力は以下の形式で与えられる．

$N \ M \ T$

$a_1 \ b_1 \ t_1$

$\vdots$

$a_M \ b_M \ t_M$

出力

スコアの最大値を出力せよ．また，末尾に改行も出力せよ．

サンプル

サンプル入力1

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

サンプル出力1

8

時刻 0 に 5，時刻 1 に 3 のスコアを得られる．

サンプル入力2

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

サンプル出力2

8

時刻 0 に 4，時刻 1 に 2，時刻 2 に 2 のスコアを得られる．
J: エナジードリンク

問題

ixmel、Pulmn 兄弟は $N$ 種類のエナジードリンクをそれぞれ 1 本ずつ持っています。
現在、ixmel と Pulmn のエネルギーはともに 0 で、時刻は午前 0 時です。
ixmel と Pulmn はエネルギーが 0 以下のまま正午になると「たいへんなこと」になります。
エネルギーが正の数では「たいへんなこと」にはなりません。
ixmel とPulmn は「たいへんなこと」にならないために、
毎日朝 6 時に 1 本のエナジードリンクを 2 人で分けて飲むことにしました。
i 番目のエナジードリンクを ixmel が飲むとエネルギーが $a_i$ 増えますが、副作用として 24 時間後にエネルギーが $b_i$ 減ってしまいます。
一方、Pulmn が飲むとエネルギーが $b_i$ 増え、24 時間後にエネルギーが $a_i$ 減ります。
また、ixmel と Pulmn は日が変わった直後、エネルギーは 0 になります。
ixmel と Pulmn は今持っているエナジードリンクだけで、どちらか一方、または両方が「たいへんなこと」になるまでの日数を少しでも長くしたいと思いました。

ixmel、Pulmn 兄弟のために最初にどちらか片方、または両方が「たいへんなこと」になるまでの日数の最大値を求めてください。なお、エナジードリンクを飲む時間は無視できるものとし、「たいへんなこと」が起こる日は求める日数に含まないものとします。

入力

入力は $1+n$ 行からなります。
1 行目には 1 個の整数 $N$ が与えられます。
続く $N$ 行の内、$i$ 行目は 2 個の整数 $a_i, b_i$ が与えられます。

制約

$1 \le N \le 10^5$

$1 \le a_i, b_i \le 10^9$

出力

考えられる「たいへんなこと」になるまでの日数の最大値を出力しましょう。
また、末尾に改行を出力しましょう。

サンプル

サンプル入力 1

5
3 5
7 4
11 9
3 7
7 8

サンプル出力 1

4

1 日目から 5 日目に飲むドリンクは、それぞれ 1, 2, 5, 3, 4 とするのが最適です。
各日のエナジードリンクを飲んだあとの (ixmel の体力, Pulmn の体力) は、それぞれ $(3, 5), (2, 1), (1, 3), (3, 2), (-6, -4)$ と変化し、
5 日目に「たいへんなこと」になるので答えは 4 です。

サンプル入力 2

2
1 1
1 1

サンプル出力 2

1

異なる種類で成分が同じエナジードリンクもあります。また、「たいへんなこと」が起こるのは、エネルギーの量が 0 以下の時であることに注意してください。

サンプル入力 2

3
5 9
3 2
7 4

サンプル出力 2

3

4 日目に飲むエナジードリンクはありません。
K: AOR イカちゃんの成績

問題

AOR イカちゃんは $N$ 回のレポートの点数のみで成績が決まる授業を受けている。

AOR イカちゃんは同じ授業を受けている友達が $M$ 人いて、自分が苦手なテーマのレポートは、そのテーマが得意な友達のレポートを写すことで、その友達と同じ点数を取ることができる。

ただし、他人のレポートを写していることを先生に気付かれてはいけないので、 $N$ 回のうち少なくとも $K$ 回は他人のレポートを写さず、自力でレポートを仕上げなくてはならない。
また、 AOR イカちゃんは友達に迷惑をかけたくないと思ったので友達 $i$ に対してレポートを写すのは $T_i$ 回以下にすることにした。

AOR イカちゃんが自力でレポートを仕上げたときの点数と、友達がレポートを仕上げた時の点数が与えられたときに、 AOR イカちゃんが取ることのできる合計点数の最大値を答えよ。

制約

$1 \le N \le 100$

$0 \le M \le 100$

$0 \le K \le N$

$0 \le a_i \le 100$

$0 \le b_{ij} \le 100$

$0 \le T_i \le N$

入力

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

$N \ M \ K$

$a_1 \ \cdots \ a_N$

$b_{11} \ \cdots \ b_{1N}$

$\vdots$

$b_{M1} \ \cdots \ b_{MN}$

$T_1 \ \cdots \ T_M$

$a_i$ はAORイカちゃんが $i$ 番目のレポートを仕上げた時の点数を、$b_{ij}$ は友達 $i$ が $j$ 番目のレポートを仕上げた時の点数を表す。

出力

AOR イカちゃんが取ることのできる合計点数の最大値を出力せよ。また、末尾に改行も出力せよ。

サンプル

入力例 1

3 2 2
50 65 70
80 100 80
90 65 45
1 1

出力例 1

225

AOR イカちゃんは 1 回だけ他人のレポートを写すことができるので、友達 2 の 1 つめのレポートを写すことで、 AOR イカちゃんは最高点数を取ることができる。

入力例 2

3 0 3
0 0 0

出力例 2

0

AOR イカちゃんには友達がいないため、レポートを写すことはできない。
A: アルファベットブロック

名川 若菜 (なかわ わかな) ちゃんは回文が大好きだ。なぜなら、自分の名前もまた回文であるからである。

わかなちゃんはアルファベットブロックがいくつか入っているセットを手に入れた。アルファベットブロックというのは、1 つのブロックにつき 1 文字の英小文字アルファベットが書いてあるブロックのことであり、ブロックの順序を入れ替えて組み合わせることで好きな文字列を作ることができる。わかなちゃんはこのセットで回文を作れないか考えているところだ。

アルファベットブロックのセットには、以下の 3 種類の操作が可能であり、操作のコストはそれぞれ 1 である。

アルファベットブロックを 1 つ追加する (記載されている文字は何であっても良い)

いま持っているアルファベットブロック 1 つを別のブロック 1 つ (記載されている文字は何であっても良い) に変える

いま持っているアルファベットブロックを 1 つ削除する

アルファベットブロックのセットに何度か操作を行うことによって、並び替えて回文にできるようなセットにしたい。そのような操作のコストの最小値はいくつになるだろうか？ わかなちゃんと一緒に考えてみよう。

Input

入力は、最初に持っているアルファベットブロックセットの情報を指す文字列 S の 1 行からなる。

S は英小文字のみで構成され、1 \leq |S| \leq 10^3 を満たす。

Output

回文を作成するためのコストの最小値を出力せよ。末尾の改行を忘れないこと。

Sample Input 1

hcpc

Sample Output 1

1

この場合コスト 1 で回文を作ることができるが、複数の方法が考えられる。例えば、’h’ のブロックを追加すると 'hcpch' が作れるため、コスト 1 で回文が作れる。また、'h’のブロックを削除すると 'cpc' が作れるため、この方法でもコスト 1 で回文が作れる。

Sample Input 2

ritscamp

Sample Output 2

4

Sample Input 3

nakawawakana

Sample Output 3

0

最初から回文を作ることができる場合、コストは 0 である。
B: だんすなうwww - Dance Now! -

物語

前回のラボライフ！ダイガクイン！！
マスターアイドルたちが競う最大の大会「ラボライフ」の前哨戦ともいえるイベント「マスターアイドルワールド」で9位を取ってしまったドサンコスノー。
キレのあるダンスは「9位の舞」、渾身の決めポーズも「9位の構え」などと冷やかされてしまい、心に深い傷を負ってしまう。
来たるラボライフ予備予選では絶対に9位をとるわけにはいかない……
決意を新たにしたドサンコスノーは、自分たちの特技「セルフコントロール」に磨きをかけ、決戦の地へと向かうのだった。

問題

N組のユニットが競う大会「ラボライフ」が開かれる。
この大会では、スマイル・ピュア・クールの3つの部門で別々に勝負が行われ、それぞれの勝負で得た得点の合計が高い順に総合順位が決定される。
スマイル部門の順位はそれぞれのユニットが持つスマイル値の値が高い順に決定される。
ピュア・クール部門でも同様にピュア値・クール値が高い順に順位が決定される。
順位に応じた得点設定は全部門で共通しており、ある部門でi位のユニットは、その部門ではr_i点を得る。

ここで、順位がi位のユニットと同じ値を持つユニットが複数ある場合、それらは同率i位とみなし、等しく得点r_iを得る。
より詳細には、kユニットが同率i位の場合には、kユニットが等しく得点r_iを得て、r_{i+1}からr_{i+k-1}までの得点を得るユニットはいない。
また、その次に値が大きいユニット (たち) は得点r_{i+k}を得る。
具体的な例として、例えばそれぞれスマイル値が1, 3, 2, 3, 2の5つのユニットがあり、順位が高い順に10, 8, 6, 4, 2点が得られる場合を考える。
このとき、2番目と4番目のユニットが10点、3番目と5番目のユニットが6点、1番目のユニットが2点を得ることになる。

ラボライフ予備予選に参加するユニット・ドサンコスノーは「ラボライフは遊びじゃない」と考えているため、真っ先に大会にエントリーし、1番目のユニットとなった。
しかし、大会に参加するN組すべてのスマイル値・ピュア値・クール値 (以降3値と呼ぶ) の情報を入手したところ、自分たちの総合順位が (同率) 9位であることがわかった。
ドサンコスノーは特技「セルフコントロール」により3値のうちいずれか1つの値を任意の値だけ上昇させることができるが、あまり上げすぎると疲れてしまい本戦に影響するので、できるだけ上昇値を小さくしたい。
ドサンコスノーはとにかく9位を脱したいので、同率8位以上になるようにセルフコントロールによって3値のいずれか1値を上げるとき、上げる必要のある最小の値を求めよ。

入力形式

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

N
r_1 ... r_N
s_1 p_1 c_1
...
s_N p_N c_N

1行目はユニットの数を表す整数Nが1行で与えられる。
続く2行目はN個の整数が空白区切りで与えられる。i (1 \leq i \leq N) 番目の整数は各部門で順位がi位だったときに貰える得点r_iを表す。
続くN行目のうち、j行目には3つの整数s_j, p_j, c_jが与えられる。これらはそれぞれj番目のユニットのスマイル値s_j、ピュア値p_j、クール値c_jを表す。
なおドサンコスノーは1番目のユニットであるとする。

制約

9 \leq N \leq 100

100 \geq r_1 > ... > r_N \geq 1

1 \leq s_j, p_j, c_j \leq 100 (1 \leq j \leq N)

セルフコントロールする前、ドサンコスノーは9位 (同率9位の場合はあるが、同率8位以上であることはない)

出力形式

セルフコントロールによって3値のどれかをxだけ上げることでドサンコスノーが同率8位以上になるような最小のxを1行に出力せよ。ただし、セルフコントロールによってどの値をどれだけ上げても順位が上げられない場合は "Saiko" と出力せよ。

入力例1

9
9 8 7 6 5 4 3 2 1
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9

出力例1

2

例えばセルフコントロールでスマイル値を2だけ上げると、ドサンコスノーの各部門における順位はそれぞれ同率7位、9位、9位となり、3+1+1 = 5点を得る。一方、2番目のユニットの各部門における順位はそれぞれ9位、8位、8位となり、1+2+2 = 5点を得る。他のユニットは6点以上を獲得するため、この2つのユニットが同率8位となり、条件を満たす。

入力例2

9
9 8 7 6 5 4 3 2 1
1 1 1
2 6 9
6 9 2
9 2 6
3 5 8
5 8 3
8 3 5
4 7 4
7 4 7

出力例2

Saiko

どの値をどれだけ上げてもドサンコスノーは11点までしか得ることができないが、他のユニットは必ず14点以上を得ることができるため、ドサンコスノーは不動の9位である。
D：歪みの国 - Country In Distortion -

物語

アリスはすっかり退屈していました。いつも一緒に遊んでいる白ウサギが、トランプ城へ出かけているからです。（あーあ、こんなことなら一緒に出かければよかったわ。）とアリスは思いました。けれども、ここは歪みの国。そうやすやすと出かけては、ひどく疲れてしまいます。どういうことかというと—

白ウサギは困っていました。トランプ城への道中、ちょっとだけ道を間違えてしまったのです。（困ったなあ。一度戻って、道を良く知っているアリスに案内してもらうことにしよう。）と白ウサギは考えました。それにしても、白ウサギはとっても疲れているみたい。白ウサギは懐中時計を見ながら、

「なんだってこの国の道は、通る度に長さが変わったように感じるんだ！この道、さっきは100メートルくらいに感じたけど、今度は1キロはあるんじゃないか？それも、通り抜けるのにかかる時間はほとんど変わってないって言うのに！」

と叫んでいます。そう、ここは歪みの国。まさに、時々刻々と道が歪み続ける不思議な国なのです。
やっとの思いでアリスの家に着いた白ウサギが開口一番、

「ごめんよアリス。トランプ城まで、道案内をお願いできるかい。」

と言うと、退屈のあまりオフトゥンに突っ伏してしていたアリスは元気に飛び起きました。

「もちろんよ！一緒に行きましょう！」

嬉しい一方で、疲れた様子の白ウサギを見て（でも、あまりに疲れてしまうのは悪いわね。）と思ったアリスは、家の奥から歪みの国の地図を取り出してきました。

「さあ、トランプ城までの疲れない道のりを探すわ！」

問題

n頂点とm辺からなる無向グラフが与えられる。各辺iの移動にかかる時間はt_iで表される。また、初めの体感移動速度としてv_0が与えられる。その後、辺を1本通る度に体感移動速度が変化する。辺をj本通った後の体感移動速度は、整数a, b, cをパラメータとして以下の式で与えられる。

v_j = (a \times v_{j-1} + b) mod c

辺iを速度v_jで通ると体感移動距離がt_i \times v_jとなる。なお、歪みの国では体感移動速度が0でも移動可能であり、そのときの体感移動距離は0である。

今、頂点1から出発し頂点nを経由して頂点1に戻ってくるような経路を考える。考えうる経路の中で体感移動距離の総和を最小化せよ。

入力形式

n m
x_1 y_1 t_1
...
x_m y_m t_m
v_0
a b c

入力は全て整数からなる。
1行目には、グラフの頂点数と辺数を表すn,mがこの順で空白区切りで与えられる。
続くm行のうちi行目には、i番目の辺が接続する2頂点x_i,y_iと、通過するのにかかる時間t_iがこの順で空白区切りで与えられる。
m+2行目には、初速度を表すv_0が与えられる。
m+3行目には、速度の計算式のパラメータa,b,cがこの順に空白区切りで与えられる。

制約

各値は整数である。

2 \leq n \leq 500

1 \leq m \leq min\{5000, n(n - 1) / 2\}

各i=1,...,mについて1 \leq x_i < y_i \leq nである。また、1 \leq i < j \leq mを満たすi, jについて、x_i \neq x_jまたはy_i \neq y_jである。つまり自己ループおよび多重辺はない。

各i=1,...,mについて1 \leq t_i \leq 10^8

0 \leq v_0 \leq 49

0 < a < c, 0 \leq b < c, v_0 < c \leq 50

グラフは連結である。すなわち任意の2頂点間に経路があることが保証される。

出力形式

体感移動距離の総和の最小値を1行に出力せよ。

入力例1

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

出力例1

34

入力例2

6 5
1 2 1
2 3 100
3 4 2
4 5 200
5 6 1
3
4 5 9

出力例2

341

通過するのに時間がかかる辺 (2,3) と (4,5) を通る前に、短い時間で通れる道を往復して、なるべく速度を落とした方が体感移動距離は短い。

入力例3

10 9
1 2 74150933
2 3 13214145
3 4 45636411
4 5 90778512
5 6 85676138
6 7 60913535
7 8 43917556
8 9 47519690
9 10 56593754
33
37 41 47

出力例3

23049391759

体感移動距離が非常に長くなる場合もある。
E：バイナリ列 - Binary Sequence -

物語

わしはバイナリ大好きBonald.Brvin.Bnuthじゃ！
オフトゥンフォード大学でバイナリ列の性質を研究しておってのお、Bnuthおじさんと呼ばれて、親しまれておるぞい！
ちなみに、わしの名前「Bonald.Brvin.Bnuth」をASCIIコードからバイナリ化すると「1000010 1101111 1101110 1100001 1101100 1100100 101110 1000010 1110010 1110110 1101001 1101110 101110 1000010 1101110 1110101 1110100 1101000」になるぞい！
楽しいのお！

今日は、弟子が何やら面白そうな実験をすると言うからのお、朝から楽しみなんじゃ！
どれどれ、どんなことをするんじゃの？

なんと！バイナリ列を書き換え続けることで、何らかの性質を見出したいとな！
ふむ！これは、重要な発見の匂いがぷんぷんするぞい！
さあ、さあ、実験を始めようではないか！
より詳細な設定を文章としてまとめておくぞい！

問題

長さnのバイナリ列x = (x_1, ..., x_n) (x_i \in \{0,1\}, i = 1,...,n) が与えられる。バイナリ列xに対して2つの関数f(x)とg(x)を以下のように定義する。

f(x) = Σ_{i=1}^{n} x_i = x_1 + x_2 + ... + x_n
g(x) = Σ_{i=1}^{n-1} x_i x_{i+1} = x_1 x_2 + x_2 x_3 + ... x_{n-1} x_n

今、バイナリ列xに対して以下のような変更操作をq回行う。j回目の変更操作はl_j, r_j, b_j (1 \leq l_j \leq r_j \leq n, b_j \in \{0,1\}, j = 1,...,q) で与えられ、これはバイナリ列xのl_j番目からr_j番目をb_jに置き換える操作に対応する。各変更操作の後でf(x) - g(x)を求めよ。

入力形式

n
x
q
l_1 r_1 b_1
...
l_q r_q b_q

1行目にはバイナリ列の長さを表す整数nが与えられる。
2行目にはバイナリ列xを表せす文字列が与えられる。
3行目にはクエリの回数を表す整数qが与えられる。
続くq行のうちi行目には、i回目のクエリに関する情報l_i, r_i, b_iがこの順で空白区切りで与えられる。

制約

2 \leq n \leq 100000

xは’0’、’1’からなる文字列

|x| = n

1 \leq q \leq 100000

1 \leq l_j \leq r_j \leq n, b_j \in \{0,1\}, j = 1,...,q

出力形式

各i=1,...,qについて、i行目にi回目のクエリを処理した後のf(x) - g(x)の値を出力せよ。

入力例1

10
0101100110
3
3 3 1
1 6 0
2 5 1

出力例1

2
1
2

入力例2

8
00111100
3
8 8 1
4 5 0
7 8 1

出力例2

2
3
2
F: 木を隠すのなら森の中

物語

「木はいいです」
喫茶店「タートルハウス」を経営するチコちゃんは、木に並々ならぬ愛情を持っている。なんでも、木の不動のあり方に心が洗われるらしい。。。そんなチコちゃんの木への愛情を確かめるため、同じ喫茶店でバイトをしているココロちゃんはチコちゃんにいたずらを仕掛けることにした。

ココロちゃんは、チコちゃんのために森を用意して、喫茶店近くに生えていた木を何本か森の中に隠し、チコちゃんの木への愛情を試すことにした。具体的には、チコちゃんに、隠した木を森の中から見つけてもらうことにした。木をこよなく愛するチコちゃんなら、一度見たことがある木は、心の洗われ方の違いでわかるのだが、木を移動してしまったため、木の不動のあり方が変わってしまい、どの木が喫茶店近くにあった木かわからなくなってしまった。しかも、ドジなココロちゃんも答えの木がどれか忘れてしまった！このままでは答えの木を元の場所に戻せないので、ココロちゃんがチコちゃんに怒られてしまう。そこで、優しいプログラマーの皆さんでココロちゃんに答えの木が何本あるのか教えてあげるプログラムを書いてあげよう。

問題

入力として、2つのグラフG_1とG_2が与えられる。G_1は森、つまり閉路のないグラフ（連結とは限らない）で、G_2は木、つまり閉路のない連結なグラフである。このとき、G_1がG_2と同型な連結成分をいくつ持つのかを求めよ

注1）グラフG_1のある連結成分H_1に含まれる任意の2頂点u, vに対して、u, vが隣接する場合にのみ、G_2中の2頂点f(u), f(v)が隣接するような全単射fが存在するとき、H_1は、G_2と同型なG_1の連結成分であるという。

入力

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

N_1 M_1
u_1 v_1
...
u_{M_1} v_{M_1}
N_2
w_1 x_1
...
w_{N_2 - 1} x_{N_2 - 1}

1行目では、森G_1の頂点数N_1（1 \leq N_1 \leq 300,000）と辺数M_1（0 \leq M_1 \leq N_1 - 1）が与えられる。続くM_1行では、i行目でG_1のi番目の辺e_iが与えられる(1 \leq i \leq M_1)。e_iは2頂点u_iとv_iをつなぐ辺である。（1 \leq u_i, v_i \leq N_1, u_i \neq v_i）次の行には木G_2の頂点数N_2（1 \leq N_2 \leq 30,000）が与えられる。続くN_2 - 1行では、j行目でG_2のj番目の辺e_jが与えられる(1 \leq j \leq N_2 - 1)。e_jは2頂点w_jとx_jをつなぐ辺である。（1 \leq w_j, x_j \leq N_2, w_j \neq x_j）

出力

G_1の持つG_2と同型な連結成分の数を出力せよ。

入力例1

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

出力例1

1

入力例2

14 9
5 8
5 11
10 14
6 4
13 9
3 14
1 2
6 12
7 9
3
3 1
2 1

出力例2

4