最小生成树问题(下)
克鲁斯卡尔算法 简述 代码及注释 简述 这种算法是求最短的合法n-1条边,用到了并查集,来避免环的产生。 代码及注释 # include <iostream> # include <algorithm> # define M 0x3f3f3f3f using namespace std ; struct Node { //创建一个结构体数组 存点的位置和权值 int x , y , value ; Node ( ) { value = M ; } //将所有点权值设为无穷大 表示到不了 } ; int n , m , v [ 101 ] = { 0 } , f [ 101 ] ; //一个标记是否访问 一个家族谱数组 int ans = 0 ; Node q [ 1010 ] ; int cmp ( Node x , Node y ) { return x . value < y . value ; } void init ( ) { cin >> n ; for ( int i = 1 ; i <= n ; i ++ ) { for ( int j = 1 ; j <= n ; j ++ ) { int a ; //中间量 cin >> a ; //输入i到j的权值大小 if ( j < i ) { //矩阵只输入下半个直角三角形(前提无向图) if ( a != 0 ) { /