#P16607. [GCPC2020]Jeopardised Journey
[GCPC2020]Jeopardised Journey
题目描述
小红帽的祖母所住的小屋已经十分破旧,需要拆除并重新建造。祖母希望把新屋建在森林中的某个林间空地上,并且希望小红帽往返时尽可能安全。
小红帽的家也位于一个林间空地中。大灰狼始终潜伏在某个林间空地里,并且只会在夜间更换位置。因此,在小红帽穿越森林的过程中,大灰狼会固定待在某一个未知的林间空地中。大灰狼不会位于小红帽的家,也不会位于祖母新屋所在的空地。
小红帽总是直接从一个林间空地走向另一个林间空地。在出发前,她会先用望远镜确认目标空地中是否有大灰狼:
- 若看见大灰狼,她不会前往该空地;
- 若无法看清目标空地,她同样不会前往该空地。
森林并不平坦,其中分布着一些山丘。若某座山丘阻挡了两个空地之间的视线,小红帽就无法看清另一个空地。即使两空地之间的视线仅与某座山丘相切,也视为被阻挡。
每座山丘都是一个完美的圆。与山丘相比,林间空地足够小,因此可将每个空地视为一个点。任意两座山丘互不相交,并且没有空地位于山丘内部或边界上。
若无论大灰狼位于哪个允许的空地,小红帽都一定能够找到一条从家到祖母新屋的路线,并且还能找到一条返回家的路线,则祖母认为该空地是安全的。
请找出所有适合祖母建造新屋的安全空地。
输入格式
第一行包含两个整数 (,),分别表示林间空地数量和山丘数量。
林间空地编号为 ,小红帽的家始终位于第 个空地。祖母从其余空地中选择新屋位置。
接下来 行,第 行包含两个整数 (),表示第 个空地的坐标。
接下来 行,每行包含三个整数 (,),表示一座圆形山丘的圆心坐标和半径。
保证:
- 任意两个空地的坐标不同;
- 任意两座山丘没有公共点;
- 没有空地位于山丘内部或边界上。
输出格式
按照升序输出所有安全空地的编号。

上图为样例 1。

上图为样例 2。
样例 1
输入
4 3
0 0
0 10
10 0
10 10
5 0 2
10 5 2
2 2 1
输出
2
样例 2
输入
7 5
0 0
10 10
10 -10
20 0
30 10
30 -10
40 0
10 4 1
6 -3 3
14 -3 3
20 10 4
30 0 4
输出
4 5 6