#P17551. PM2946 负性光刻胶
PM2946 负性光刻胶
题目描述
你正在制作一块电路板。电路由若干针孔以及连接针孔的金属导线组成。可以把针孔看成平面上的点,把金属导线看成连接两个针孔的直线段。
电路图案被制作在一张遮罩上。曝光时,如果将遮罩绕 轴旋转一个角度 ,遮罩在光刻胶平面上的投影会沿 方向缩短。假设光线与 轴平行,并忽略衍射,则针孔 在投影后的坐标可以视为 。
现在要求:对于每一对能够通过金属导线互相到达的针孔,求它们之间沿导线行走的最短路径长度,并将所有这些最短路径长度相加。这个总和必须 严格小于 给定的限制 。
如果两个针孔之间不存在路径,则这一对针孔不计入总和。针孔对是无序的,即 与 只计算一次。
你希望遮罩的倾斜角尽可能小。请计算满足要求的最小非负旋转角 ,单位为弧度。
注意:
- 只有输入中明确给出的连接才是金属导线;
- 即使两条导线在几何上相交或重合,也不会因此产生新的连接;
- 同一对针孔至多视为存在一条导线,即使输入中重复出现同一个相邻编号;
- 输入保证连接关系是对称的。
输入格式
第一行输入两个整数 ,分别表示针孔数量和总最短路长度限制。
接下来 行描述编号为 的针孔。
第 行的格式为:
X,Y P1 P2 P3 ...
其中:
X,Y表示针孔 在遮罩平面上的整数坐标 ;- 后面的若干整数表示与针孔 直接相连的针孔编号;
- 某一行可以没有任何相邻编号。
输出格式
输出一个实数,表示满足总最短路长度严格小于 的最小倾斜角,单位为弧度。
答案的绝对误差或相对误差不超过 即可。
样例 1
输入
7 100835
3,0 2 3
13,0 2 3
0,2 0 1
8,50 0 1
3,100000 5
100000,3 4
8432,221
输出
1.4454078077996135
样例 2
输入
7 141601
3,0 2 3
13,0 2 3
0,2 0 1
8,50 0 1
3,100000 5
100000,3 4
8432,221
输出
0.010604469396671205
样例 3
输入
7 100065
3,0 2 3
13,0 2 3
0,2 0 1
8,50 0 1
3,100000 5
100000,3 4
8432,221
输出
1.5491503047781332
样例解释
三个样例使用同一组针孔和连接关系,仅限制 不同。
样例 1 中,针孔 依次构成一个环。遮罩平放时,针孔 到针孔 的最短路经过针孔 ;随着倾斜角增大,这条最短路会改为经过针孔 。针孔 组成另一个连通块,针孔 与任何针孔均不连通。
数据范围
- ;
- 每行针孔描述的长度不超过 个字符;
- ;
- 所有相邻编号均在 内;
- 针孔不会与自身相连;
- 若 与 相连,则 与 也相连;
- ;
- 正确答案保证位于 内;
- 当 时,总最短路长度取得最小值。