[Ncpc2009]Beacons
在远古时代,信息的交流没有我们现在这么便利。一个国家在战争时期,可能花好几个月的时间来集合军队。但是在作战区用上烽火台,就有可能快速地传递军事信号。
当第一个烽火台被点燃,所有能看到这个烽火台的其他烽火台也将被点燃,所有能看到这些烽火台的其他烽火台也将被点燃,如此继续直到所有烽火台都被点燃——自然,这要求所有的烽火台都直接或间接地在彼此的视野范围内。如果不是这样,则紧急的信息必须由骑手们在一些烽火台间传递。
给出这个国家所有烽火台的位置,同时还给出山峰的位置和大小,请写一个程序来决定:为使敌人入侵这个国家时所有的烽火台都被点燃,有多少信息要被骑手们传递。
简单来说,我们这样来定义一个国家的模型:一个烽火台就用 平面上的一个点来表示,一座山峰就用一个圆来表示。如果两个烽火台的连接直线上没有山峰座落,则认为这两个烽火台是在相互的视野内。
输入是这样构造的:
- 任何一对烽火台的连线不会与山峰的圆周相切,除非这条连线通过了别的山峰的内部;
- 山峰不会重叠或相切;
- 任何一个烽火台也不会在山峰内或它的圆周上。
输入格式
第一行有两个整数 和 , 表示烽火台的数量, 表示山峰的数量。
接下来的 行定义了烽火台的位置,每个烽火台的位置用一对整数 和 来表示。
接下来的 行描述了所有的山峰,每个山峰用三个数来表示 : 为整数,定义了山峰的位置, 定义了半径。
输出格式
输出一个整数:为使所有烽火台点燃,骑手们必须传递的信息数量。
样例输入
6 3
1 8
5 4
7 7
9 2
16 6
17 10
4 7 2
6 3 1
12 6 3
样例输出
2
数据范围
- ,;
- ,;
- 。
来源与许可
本题为 NCPC 2009 试题「Beacons」,题面与测试数据整理自 BZOJ 2233。
样例 1
输入
6 3
1 8
5 4
7 7
9 2
16 6
17 10
4 7 2
6 3 1
12 6 3
输出
2