一.问题
图中的6个顶点分别代表6个村庄,线段的权值代表村庄之间的距离。请问如何找到最短的路径来访问每一个村庄,且每个村庄只访问一次。
二.解决
1.提取图的边,并将边按权值大小从小到大排列,并放入edge数组。如下:
2.创建根数组(辅助数组),数组下标代表顶点节点本身,其元素代表顶点的根节点,如下:
提示:这里的“根”并不是树结构中真正的根,一棵树中只有一个根,而这里的“根”泛指长辈,可能是父节点,也可能是“爷”节点。初始化根数组为-1,代表初始状态下每个顶点都各自代表一个集合。
3.将edge数组中的边从小到大依次放回图中,如果后续加入的边与图