小 P 和小 R 是一对非常好的朋友,今天他们在玩一个模拟建设类游戏。
游戏中共有 n 个城市,通过 m 条双向道路连接。第 i 条道路连接了城市 ai 和 bi。
不幸的是,在一次巨大的灾难以后,这 m 条道路全部损坏了。修复第 i 条道路需 要 ci 天。把这些道路全部修复的代价可能太大,小 P 和小 R 只希望某 k 个城市之间 两两恢复通行。
游戏中,小 P 和小 R 拥有很多的修路工人,所以如果一个修路方案包含多条道路, 那么这些道路可以同时开工。整个工程完工的时间就是这个工程中需要时间最长的道 路的用时。
小 P 和小 R 为了给你加大难度,一共要问你 q 个这样的问题。不同的问题之间不 会互相影响,你可以认为这 q 个问题是发生在不同的平行世界中的。
从文件 road.in 中读入数据。
第一行包含三个整数 n, m, q。
接下来 m 行,每行三个整数 ai , bi , ci,描述一条道路。注意道路的两端有可能是相 同的城市。
接下来 q 行,每行描述一个问题:第一个数是这个问题的 k,接下来 k 个数表示这 次问题中需要两两恢复通行的城市编号。保证 k 至少为 1;一个问题中可能多次出现同 一个城市。
输出到文件 road.out 中。
输出 q 行,依次表示每一个问题的答案。
如果不需要建设任何道路,输出 0;如果无论如何也无法完成,输出 INF。
5 6 3
1 2 4
2 3 4
3 1 4
1 4 3
2 4 3
3 4 3
3 1 2 3
4 1 2 3 5
2 5 5
3
INF
0
这道题需要用 最小生成树,但本蒟蒻不会写最小生成树,这就是我求助的问题。
感谢帮助。