给定一个带权无向图G,你可以按如下方法定义一棵生成树: 图 G 是一个顶点与边的集合 (V, E), V 表示顶点集合 {v1, v2, …, vn} , E 表示无向的边的集合 {e1, e2, …, em}. 每条边 e ∈ E 有一个权值 w(e). 生成树 T 是一棵树(一个连通的无环子图) ,它用 n - 1 条边连接了全部的 n 个顶点。 生成树T的苗条度定义为生成树的n - 1条边中权值最大的边和权值最小的边的权值之差。 例如,图5(a)有4个顶点 {v1, v2, v3, v4} 和5条边 {e1, e2, e3, e4, e5}. 各条边的权值分别为 w(e1) = 3, w(e2) = 5, w(e3) = 6, w(e4) = 6, w(e5) = 7 ,如图5(b)所示.
该图存在多棵生成树,图6(a)~(d)展示了其中的4棵。生成树 Ta 的3条边的权值分别是 3, 6 和 7. 权值最大为 7 最小为 3,因此 Ta 的苗条度为 4。 相应的,生成树 Tb, Tc 和 Td 的苗条度分别是3 , 2 和 1。 显而易见,任意一棵生成树的苗条度都大于或等于1,因此Td是所有生成树中最苗条的。 你的任务就是写一个程序来计算出最小的苗条度。