#futurecontest2020final2a. [future_contest_2020_final_2_a]千の木2

[future_contest_2020_final_2_a]千の木2

问题文的变更点

  • KK 不再固定,而是对于每棵树给定 KiK_i,每棵树有2到100个节点。
  • 修改了 cic_i 的生成方式。中间节点的比例下降,弱节点增加,cic_i 的值总体减少。

问题文

在二维坐标平面上有 NN 个顶点,分别是顶点 1,,N1, \ldots, N。此外,还给出了 SS 个无向树 T1,,TST_1, \ldots, T_S

你的任务是在平面上连接一些顶点以形成一个包含 NN 个顶点的无向图 GG,然后从 GG 中“提取”出 SS 个图。提取出的图与 T1,,TST_1, \ldots, T_S 越相似,得分就越高。下面对每个事项进行详细说明。

  • 关于平面上的顶点:顶点 ii (1iN)(1 \leq i \leq N) 的坐标是 (xi,yi)(x_i, y_i),这些坐标都是介于 0010001000 之间的整数。此外,每个顶点都有一个正整数值,称为 权值,顶点 ii 的权值是 cic_i

  • 关于树 T1,,TST_1, \ldots, T_S:每棵树都有 KiK_i 个编号为 1,,K1, \ldots, K 的顶点。为方便起见,这些树被输入为以编号 11 的顶点为根的有根树。对于树 TiT_i (1iS)(1 \leq i \leq S) 中编号为 jj (2jKi)(2 \leq j \leq K_i) 的顶点,其父亲是编号为 pi,jp_{i,j} 的顶点。

  • 关于添加边:可以在图 GG 中添加 00 条或多条无向边,总数不超过 100000100000 条。但是,要添加边 i,j\\{i, j\\} (ij)(i \neq j),顶点 iijj 之间的欧几里得距离必须小于等于 ci+cjc_i + c_j。此外,不能产生自环或重边。

  • 关于提取图:对于每棵树 TiT_i (1iS)(1 \leq i \leq S),请指定 GG 中的 KiK_i 个不同顶点 Vi,1,,Vi,KiV_{i,1}, \ldots, V_{i,K_i}。这表示对于每个 jj (1jKi)(1 \leq j \leq K_i),将顶点 Vi,jV_{i,j} 对应到树 TiT_i 的编号为 jj 的顶点。同一个顶点可以与多棵树相关联。

  • 关于得分:对于每棵树 TiT_i (1iS)(1 \leq i \leq S),计算如下得分,然后将所有树的得分相加作为你的得分。

  • 若存在整数 x,yx, y (1x,yKi)(1 \leq x, y \leq K_i)TiT_i 有边 x,y\\{x, y\\},但 GG 没有边 Vi,x,Vi,y\\{V_{i,x}, V_{i,y}\\}:得 00

  • 否则,设形如 (x,y)(x, y) (1x,yKi)(1 \leq x, y \leq K_i) 的整数对有 GG 有边 Vi,x,Vi,y\\{V_{i,x}, V_{i,y}\\},但 TiT_i 没有边 x,y\\{x, y\\} 的个数为 eie_i

    • ei=0e_i = 0 时:得 100100
    • ei=1e_i = 1 时:得 1010
    • ei=2e_i = 2 时:得 11
    • ei3e_i \geq 3 时:得 00

约束条件

  • N=1000N = 1000
  • S=1000S = 1000
  • 2Ki1002 \leq K_i \leq 100
  • 0xi,yi10000 \leq x_i, y_i \leq 1000
  • 1ci15001 \leq c_i \leq 1500
  • 1pi,jj11 \leq p_{i,j} \leq j-1
  • 输入中的所有值都是整数。

输入

输入从标准输入读入,具有以下格式:

NN SS x1x_1 y1y_1 c1c_1 x2x_2 y2y_2 c2c_2 :: xNx_N yNy_N cNc_N K1K_1 p1,2p_{1,2} p1,3p_{1,3} ldots\\ldots p1,K1p_{1,K_1} K2K_2 p2,2p_{2,2} p2,3p_{2,3} ldots\\ldots p2,K2p_{2,K_2} :: $K_S