zoukankan      html  css  js  c++  java
  • 还是畅通工程 -- prim算法

    #include <stdio.h>
    #include <string.h>
    #define INF 100000000
    int map[101][101];
    int dis[101];
    int vis[101];
    int n;
    
    long long ans = 0;
    void prim()
    {
        int i,j;
        int min,pos;
        memset(vis,0,sizeof(vis));
        memset(dis,INF,sizeof(INF));
        vis[1] = 1;
        dis[1] = 0;
        for(i = 1;i<=n;i++)
        {
            dis[i] = map[1][i];
        }
    
        min = INF;
        for(i = 1;i<=n-1;i++)
        {
            min = INF;
            for(j = 1;j<=n;j++)
            {
                if(!vis[j] && dis[j]<min)
                {
                    pos = j;
                    min = dis[j];
                }
            }
            vis[pos] = 1;
            ans = ans + min;
            for(j = 1;j<=n;j++)
            {
                if(!vis[j] && dis[j]>map[pos][j])
                dis[j] = map[pos][j];
            }
        }
    }
    int main()
    {
        int i,j;
        int u,v,w;
        while(scanf("%d",&n),n)
        {
            for(i = 1;i<=n;i++)
            {
                for(j = 1;j<=n;j++)
                {
                    if(i == j)
                    map[i][j] = 0;
                    else
                    map[i][j] = INF;
                }
            }
            for(i = 1;i<=(n*(n-1))/2;i++)
            {
                scanf("%d%d%d",&u,&v,&w);
                {
                    if(map[u][v]>w)
                    {
                        map[u][v] = map[v][u] = w;
                    }
                }
            }
            prim();
            printf("%lld
    ",ans);
            ans = 0;
        }
    }
    

      

  • 相关阅读:
    6-2 铁轨 uva 514
    并查集基础
    周练7
    周练5
    周练4
    二分查找
    周练3
    2-7 使用不同方式进行定位.py
    2-6 使用title_contains检查页面是否正确
    启用不同浏览器.py
  • 原文地址:https://www.cnblogs.com/yangyongqian/p/3880291.html
Copyright © 2011-2022 走看看