#P851. 建路(road)

建路(road)

【问题描述】

收集完能量球的sherc因为拥有了巨大的能量,完全不怕即将到来的1000m跑,可是……学校还没有选好这些项目测试的位置!

这急坏了sherc和ConanQZ,~因为能量球的能量只能让今天跑过~~1000m~,为了让广大学生完成这次达标运动会,sherc和ConanQZ决定帮助学校。

这次达标运动会一共有n个项目,每个项目都有所在位置的坐标

(x,y),任意两个位置间建路的花费定义为**(x1-x2)^2+(y1-y2)^2**

学校希望建尽量少的路使得 任意两个位置间均有路可以到达 ,并且希望花费最小。

Sherc和ConanQZ了解后表示特别简单,可是又来了m个承包商,他们将提供m个套餐,每个套餐有一个花费c,如果买了这个套餐,那么套餐内包含的项目的位置会直接通过~黑科技~连接到一起。

为了让学校成功举办运动会,最小花费是多少呢?

注意:套餐内的项目连接到一起后,可以从任意一个项目的位置到另一个项目的位置。 【输入格式】 第一行两个整数 n,m。

接下来n行,每行有两个整数x,y。表示1~n项目的(x,y)坐标。

接下来m行,每行有2+k个整数c,k,a1,a2,……,ak.

c表示该套餐花费,k表示该套餐连接的项目数目,接下来k个数表示这些项目。(看不懂看样例)

【输出格式】road.in

一个整数,表示最小花费。

【样例输入】road.out

3 1
1 1
2 2
1000 1000
10 2 2 3

{花费10,连接了2个项目,他们是2,3}

【样例输出】

12

【样例解释】

买了第一个套餐【也只有一个】,2和3项目连接起来,然后给1和2项目之间建路,花费为1+1+10=12。

【数据范围】

对于30%的数据 n<=100 m<=3

对于100%的数据 n<=1000,m<=10,k<=n

对于100%的数据,x,y,c<=maxlongint

保证最后答案在int64****范围