zoukankan      html  css  js  c++  java
  • 克鲁斯卡尔算法(最短路算法详解)

     最短路算法详解       http://www.tuicool.com/articles/rauuama



    1、基本思想:设无向连通网为G=(V, E),令G的最小生成树为T=(U, TE),其初态为U=V,TE={ },然后,按照边的权值由小到大的顺序,考察G的边集E中的各条边。若被考察的边的两个顶点属于T的两个不同的连通分量,则将此边作为最小生成树的边加入到T中,同时把两个连通分量连接为一个连通分量;若被考察边的两个顶点属于同一个连通分量,则舍去此边,以免造成回路,如此下去,当T中的连通分量个数为1时,此连通分量便为G的一棵最小生成树。 
    2、示例:


    #include <stdio.h>
    #include<algorithm>
    #include <stdlib.h>
    using namespace std;
    struct node
    {
        int u;
        int v;
        int w;
    } edge[5010];
    bool cmp(const node &a,const node &b) //按升序排列
    {
        return a.w<b.w;
    }
    int main(void)
    {
        int t;
        printf("请输入测试组数: ");
        scanf("%d",&t);
        printf("
    ");
        while(t--)
        {
            int i,n,num,min,k,g,x[100];
            printf("请输入顶点的个数:");
            scanf("%d",&n);
            for(i=1; i<=n; i++)
                x[i]=i;
            printf("请输入每条边的起始端点、权值:
    ");
            for(i=0; i<n; i++)
                scanf("%d %d %d",&edge[i].u,&edge[i].v,&edge[i].w); //输入每条边的权值
            sort(edge,edge+n,cmp);
            min=num=0;
            for(i=0; i<n && num<n-1; i++)
            {
                for(k=edge[i].u; x[k]!=k; k=x[k]) //判断线段的起始点所在的集合
                    x[k]=x[x[k]];
                for(g=edge[i].v; x[g]!=g; g=x[g]) //判断线段的终点所在的集合
                    x[g]=x[x[g]];
                if(k!=g)  //如果线段的两个端点所在的集合不一样
                {
                    x[g]=k;
                    min+=edge[i].w;
                    num++;
                    printf("最小生成树中加入边:%d %d
    ",edge[i].u,edge[i].v);
                }
            }
            printf("最小生成树的权值为:%d
    ",min);
            system("pause");
        }
        return 0;
    }


  • 相关阅读:
    log4j配置
    Fragment配合RadioGroup实现点击切换布局
    (转)[原] Android 自定义View 密码框 例子
    标题栏透明度变化
    Android 监听ScrollView的滑动
    Android进度条学习
    Android-正方形的容器
    Android添加图片到ListView或者 RecyclerView显示
    Android打开相机和打开相册
    2020新年快乐
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/7264874.html
Copyright © 2011-2022 走看看