名コンビであるふたりのエージェント A, B がアジトへの潜入ミッションを行う.アジトの警備は厳重であるため,エージェント A, B は,それぞれ確認済みの安全な潜入経路 RA, RB をたどり移動することとした.潜入経路は二次元平面上の折れ線(線分の並び)である.
ミッション中エージェントは経路上を連続的に移動するなら,自由な速度で前進も後退もでき,一時停止することもできる.しかし,ジャンプして不連続に移動することはできない.潜入経路の線分は同じ経路上の他の線分と交差したり重なったりしているかもしれないが,それを移動には利用できない.厳密には,ある線分上にいるエージェントが他の線分に移れるのは,次の場合だけである.
不測の事態に備えてふたりのエージェントは無線通信機を携帯し,常にふたりの間の連絡がとれる範囲内にいなくてはならない.電波強度を上げれば通信可能な距離は長くなるが,傍受の危険性も高まる.両エージェントが適切に移動するとして,任務完了に必要な通信可能距離の最小値を求めよ.
入力は複数のデータセットからなる.各データセットは次の形式で表される.
n
xA,1 yA,1
⋮
xA,n yA,n
m
xB,1 yB,1
⋮
xB,m yB,m
n は潜入経路 RA を構成する折れ線の頂点数を表す.n は 2 以上 40 以下の整数である.
xA,i と yA,i (1 ≤ i ≤ n) は i 番目の頂点の座標を表す.xA,i と yA,i はそれぞれ −1000 ≤ xA,i ≤ 1000, −1000 ≤ yA,i ≤ 1000 を満たす整数である.1 ≤ i ≤ n−1 を満たす i について (xA,i, yA,i) が i 番目の線分の開始端,(xA,i+1, yA,i+1) が終端である.どの線分の長さも 0 ではない.すなわち,xA,i ≠ xA,i+1 と yA,i ≠ yA,i+1 の少なくとも一方は成り立つ.
m および xB,j, yB,j (1 ≤ j ≤ m) は潜入経路 RB の情報を表す.形式および制約は RA についてのものと同じである.
入力の終わりは,ゼロだけからなる行で表される.データセットの個数は 50 を超えない.
Problem H
芸術家の苦悩
芸術家であるあなたは,作品の材料として多くのボールとそれらを結ぶための紐を用意した.ボールには順に番号を振っていくが,最初はボールのひとつを 1 番とするだけである.他のボールはまだ番号を振っていないし,どのボールも紐で結んでいない.
作品制作には以下の操作のどちらかを行うことを繰り返す.
- 複製:
- 制作途中の作品のレプリカを作る.これまでに番号付けしたボールが n 個あるとき,まだ番号のついていないボール n 個に n+1, ..., 2n という番号を振る.これで 2n 個のボールに 1 から 2n の重複しない番号を振ったことになる.次に,複製前に直接結ばれていたふたつのボールの組すべてについて,それが u 番と v 番なら,新たに n+u 番と n+v 番のふたつのボールを紐で結ぶ.
- 新たな結合:
- 番号がついているふたつの異なるボールを選び,紐で結ぶ.ただし,ふたつのボールが既に直接結ばれていたら何もしない.
最初はひとつのボールにしか番号がついていないので,まずは複製から始めることになる.
図 H-1 に Sample Input の 2 番目のデータセットの作品の制作過程を示す.
図 H-1: 作品の制作例
すべての真の芸術家と同様完璧主義者であるあなたは,不完全な作品には我慢できない.不満足な作品は,つないだ紐を全部引きちぎって一刻も早く完全に破壊してしまいたい.そこで,あなたは番号のついたボールのうちのいくつかを片手に,残り全てをもう一方の手に持って,ふたつの端点が左右の手にまたがるような紐を全部いっぺんに引きちぎることにした.この行為を 1 回だけ行うことでボールとボールを結ぶ紐を全て切断できれば,作品の破壊は成功である.逆に,同じ手に持ったボール同士を結ぶ紐があるようならば,それが切断されずに残ってしまうので,作品の破壊は失敗である.
図 H-2 は Sample Input の 2 番目のデータセットで作られる作品の破壊を試みる様子を示している.この作品を破壊するには,どちらの手にも 3 個以上のボールを持つ必要がある.
図 H-2: 上述の作品の破壊
与えられた操作の列によって作られる作品について,上記のやり方でこれを破壊できるか判定せよ.できる場合は,少なくともいくつのボールを左手に持つ必要があるか求めよ.右手にはいくつのボールを持ってもよい.
Input
入力は複数のデータセットからなる.
各データセットは次の形式で表される.
m
a1
⋮
am
m はあなたが行った操作の数を表す.m は正の整数であり,300 を超えない.
i 番目の操作 ai (i = 1, ..., m) は以下のいずれかの形式で与えられる.
COPY
-
これは問題文中の 複製 操作を表す.単一のデータセットに含まれる
COPY
操作の総数は 60 を超えないことが保証される.
LINK
u v
-
これは問題文中の 新たな結合 操作を表す.この操作では,番号 u, v の 2 個のボールを確認し,これらがまだ直接結ばれていなければ紐で結んだ.u と v は u < v を満たす正の整数で,この操作の時点で番号 u, v のボールがそれぞれ存在することが保証される.
入力の終わりは,ゼロだけからなる行で表される.入力に含まれるデータセットは 100 個以下である.
Output
各データセットについて,ひとつの整数からなる行を出力する.上述の方法で作品を破壊することができるならば,そのとき左手に持つ必要があるボールの最小の個数を出力せよ.作品の破壊が不可能ならば −1 を出力せよ.
Sample Input
3
COPY
LINK 1 2
COPY
8
COPY
COPY
LINK 1 2
LINK 1 3
LINK 1 3
COPY
LINK 5 6
LINK 3 6
5
COPY
LINK 1 2
COPY
LINK 1 3
LINK 2 3
2
COPY
COPY
0
Output for the Sample Input