問題文の変更点
- K が固定でなくなり、木ごとに Ki が与えられ、2 以上 100 以下の頂点の木が与えられるようになりました。
- ci の生成式を変更しました。中頂点の割合が下がり、弱頂点が増え、ci が全体的に少なくなっています。
問題文
二次元座標平面上に N 個の頂点、頂点 1,ldots,N があります。また、S 個の無向木 T1,ldots,TS が与えられます。
あなたの課題は、平面上の頂点を結ぶ辺を何本か張って N 頂点の無向グラフ G を作成し、G から S 個のグラフを「取り出す」ことです。取り出したグラフが T1,ldots,TS に「似ている」ほど高得点となります。以下、各事項について詳細を述べます。
-
平面上の頂点について: 頂点 i (1leqqileqqN) の座標は (xi,yi) であり、これらの座標はすべて 0 以上 1000 以下の整数です。また、各頂点には正の整数値 パワー が定められており、頂点 i のパワーは ci です。
-
木 T1,ldots,TS について: いずれも、1,ldots,K の番号が付けられた Ki 個の頂点を持つ無向木です。便宜上、これらの木は番号 1 の頂点を根とする根付き木として入力され、木 Ti (1leqqileqqS) における番号 j (2leqqjleqqKi) の頂点の親は番号 pi,j の頂点です。
-
辺の追加について: 作成するグラフ G には 0 本以上 100000 本以下の任意の本数の無向辺を張ることができます。ただし、辺 i,j (ineqj) を張るには、頂点 i,j 間のユークリッド距離が ci+cj 以下でなければなりません。また、自己辺や多重辺を生じさせてはなりません。
-
グラフの取り出しについて: それぞれの木 Ti (1leqqileqqS) に対して、G の相異なる Ki 頂点 Vi,1,ldots,Vi,Ki を指定してください。これは、各 j (1leqqjleqqKi) について、頂点 Vi,j を Ti の番号 j の頂点に対応させることを表します。同じ頂点を複数の木に対して用いても構いません。
-
得点について: それぞれの木 Ti (1leqqileqqS) について以下のように点数を算出し、S 個の木に対する点数の合計がそのテストケースにおけるあなたの得点となります。
-
ある整数 x,y (1leqqx,yleqqKi) が存在して、Ti が辺 x,y を持つが G が辺 Vi,x,Vi,y を持たないとき: 0 点
-
そうでないとき、整数の組 (x,y) (1leqqx,yleqqKi) であって、G が辺 Vi,x,Vi,y を持つが Ti が辺 x,y を持たないものの個数を ei とする。
- ei=0 のとき: 100 点
- ei=1 のとき: 10 点
- ei=2 のとき: 1 点
- eigeqq3 のとき: 0 点
制約
- N=1000
- S=1000
- 2leqqKileqq100
- 0leqqxi,yileqq1000
- 1leqqcileqq1500
- 1leqqpi,jleqqj−1
- 入力中の値はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。
N S
x1 y1 c1
x2 y2 c2
:
xN yN cN
K1 p1,2 p1,3 ldots p1,K1
K2 p2,2 p2,3 ldots p2,K2
:
KS pS,2 pS,3 ldots pS,KS
出力
以下の形式で出力せよ。
M
A1 B1
A2 B2
:
AM BM
V1,1 V1,2 ldots V1,K1
V2,1 V2,2 ldots V2,K2
:
VS,1 VS,2 ldots VS,KS
これは、作られたグラフ G が M (0leqqMleqq100000) 本の辺 $\\{A_1, B_1\\}, \\{A_2, B_2\\}, \\ldots, \\{A_M, B_M\\}$ (1leqqAi,BileqqN) を持つことを表す。辺は任意の順で出力してよく、各辺の端点を出力する順も任意でよい。Vi,j (1leqqVi,jleqqN) に関しては問題文本文を参照せよ。
テストケースは 50 個与えられる。各テストケースについて、問題文本文に記載された通りに点数が計算され、全てのテストケースに対する点数の合計がその提出の得点となる。
上記のフォーマットに違反する出力や、またはその他の何らかの欠陥 (例: 自己辺や多重辺の存在、一度の取り出しにおける頂点の重複) のある出力は「不正解」と判定されることがある。この場合、そのテストケースが入力例として与えられているものであれば、そのテストケースでの得点が 0 点となる。その他のテストケースであれば、入力例以外の全てのテストケースでの得点が 0 点となる。
テストケース生成方法
-
各頂点 i (1leqqileqqN) の座標 xi,yi は、それぞれ 0 以上 1000 以下の整数から一様ランダムに選ばれる。これら 2N 個の座標はすべて独立に選ばれ、複数の点が一致しても再抽選などは行われない。
-
各頂点 i (1leqqileqqN) は、5% の確率で 強頂点、10% の確率で 中頂点、85% の確率で 弱頂点 となる。これに基づき、ci が以下の範囲の整数から一様ランダムに選ばれる。
-
強頂点: 200 以上 500 以下
-
中頂点: 50 以上 200 以下
-
弱頂点: 1 以上 50 以下
-
各 i,j (1leqqileqqS,2leqqjleqqKi) に対し、木 Ti の番号 j の頂点の親 pi,j は 1 以上 j−1 以下の整数から一様ランダムに選ばれる。
入出力例
入力例および出力例は このリンク からダウンロードできます。