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;
    }


  • 相关阅读:
    java方法执行超时关闭
    PostGIS-将多面转换为单面(PostGIS
    deepin安装JDK
    Power Designer反向工程
    【Redis实操】twemproxy代理搭建
    mysql 一些语句
    利用insertd查出更新记录
    sqlserver 存储过程分页
    sqlserver存储过程分页记录
    js group by
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/7264874.html
Copyright © 2011-2022 走看看