zoukankan      html  css  js  c++  java
  • pta 08-图7 公路村村通 (30分) 最小生成树

    #include<bits/stdc++.h>
    using namespace std;
    const int inf=0x7fffffff;
    
    int n,m,g[1024][1024],dist[1024];
    
    void prim()
    {
        int ans,i,j,v,minx;
        for(i=0; i<n; i++)
            dist[i]=g[0][i];
        dist[0]=-1;
        ans=0;
        for(i=1; i<n; i++)
        {
            minx=inf;
            v=-1;
            for(j=0; j<n; j++)
            {
                if(dist[j]<minx&&dist[j]!=-1)
                {
                    minx=dist[j];
                    v=j;
                }
            }
            if(v!=-1)
            {
                ans+=dist[v];
                dist[v]=-1;
                for(j=0; j<n; j++)
                    if(g[v][j]<dist[j])
                        dist[j]=g[v][j];
            }
        }
        for(i=0;i<n;i++)
            if(dist[i]!=-1) break;
    
        if(i<n) ans=-1;
        printf("%d
    ",ans);
    }
    
    int main()
    {
        int i,j,u,v,w;
        while(~scanf("%d%d",&n,&m))
        {
            for(i=0; i<n; i++)
                for(j=0; j<n; j++)
                    if(i==j) g[i][j]=0;
                    else g[i][j]=inf;
    
            for(i=0; i<m; i++)
            {
                scanf("%d%d%d",&u,&v,&w);
                u--;
                v--;
                g[u][v]=g[v][u]=min(g[u][v],w);
            }
            prim();
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    数组与方法
    数据类型
    认识Java(2)
    认识Java(1)
    面试题集锦
    00-python语言介绍
    06-python-生成器、循环器
    00-python-内置函数笔记
    04-python-闭包
    03-python-装饰器
  • 原文地址:https://www.cnblogs.com/xryz/p/4847797.html
Copyright © 2011-2022 走看看