#P1161. Walls

Walls

描述

某国家修建了若干长城,每段长城恰好连接两座城镇,且长城之间互不交叉。因此,该国被划分为若干区域,要从一个区域到另一个区域,必须经过某个城镇或跨越某段长城。任意两座城镇A和B之间最多有一段长城直接相连,且从A到B的路径总是存在的(仅通过城镇或长城)。输入格式隐含了额外限制条件。

某俱乐部的成员居住在这些城镇中,每个城镇最多只有一名成员(也可能没有)。成员们希望在某一个区域(不在任何城镇内)会面。他们骑自行车出行,既不想进入任何城镇(因交通问题),又希望尽可能少跨越长城(因跨越困难)。每位成员前往会面区域时需要跨越的长城次数(可能为0)的总和称为"跨越总和",他们希望找到最优会面区域使这个总和最小。

</p>

城镇用1到N的整数编号(N为城镇总数)。例如在图1中,带标签的节点代表城镇,连线代表长城。假设有3名成员分别住在城镇3、6和9,则图2显示了最优会面区域及相应路线,此时跨越总和为2:来自城镇9的成员需要跨越城镇2-4之间的长城,来自城镇6的成员需要跨越城镇4-7之间的长城。

你需要编写程序,根据给定的城镇布局、区域划分和成员居住地,计算最优会面区域及最小跨越总和。

输入

程序从标准输入读取数据:

  • 第1行:区域数MM2M2002 \leq M \leq 200
  • 第2行:城镇数NN3N2503 \leq N \leq 250
  • 第3行:成员数LL1L301 \leq L \leq 30LNL \leq N
  • 第4行:LL个严格递增的整数,表示成员所在城镇编号

随后是2M2M行区域描述(每区域占2行):

  • 奇数行:该区域边界的城镇数II
  • 偶数行:按顺时针方向排列的II个城镇编号(最后一个"外部区域"按逆时针排列)
    区域按输入顺序被标记为1,2,...,M(最后一个为外部区域)

输出

程序向标准输出写入:

  • 第1行:最小跨越总和

示例

输入数据1

10
10
3
3 6 9 
3
1 2 3 
3
1 3 7 
4
2 4 7 3 
3
4 6 7 
3
4 8 6 
3
6 8 7 
3
4 5 8 
4
7 8 10 9 
3
5 10 8 
7
7 9 10 5 4 2 1

输出数据1

2

来源
IOI 2000