zoukankan      html  css  js  c++  java
  • 最小生成树 10.1.5.253 1505 poj 1258 http://poj.org/problem?id=1258

    #include <iostream>//    poj 1258         10.1.5.253   1505
    using namespace std; 
    #define N 105               // 顶点的最大个数  (多写 
    int a[N][N],low[N],n,ans;
    int min(int x,int y)
    {    return x<y?x:y;   }
    
    void prim(int u0)             
    {
        int i,j,m,k;
        ans=0;                       // 
        for (i=1;i<n;i++)  
    	low[i]=a[u0][i];              //
        low[u0]=-1;
        for (i=1;i<n;i++)              //循环n-1次  依次加入n-1个顶点                    
        {
            m=1<<20;
            for (j=0;j<n;j++)           //找一个最小的的边 
                if (low[j]!=-1&&low[j]<m)
                {    m=low[j];    k=j;   }
            ans+=m;                      // 
            low[k]=-1;
            for (j=0;j<n;j++)       //
                if (low[j]!=-1)
    			low[j]=min(low[j],a[k][j]);
        }
    }
    
    
    int main()
    {
        int i,j;
        while(cin>>n&&n>=3)
        {
            for (i=0;i<n;i++)   //邻接矩阵 
            for (j=0;j<n;j++)
                cin>>a[i][j];
            prim(0);             // 从0开始 
            cout<<ans<<endl;	
        }
        return 0;
    }
    

      

  • 相关阅读:
    SQL里面的函数应用
    Split的小用法
    堆栈和堆问题
    break,continue,goto,Return几个方法
    接口笔记
    抽象类
    虚方法
    将博客搬至CSDN
    运行数据区
    美团-走迷宫
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3462117.html
Copyright © 2011-2022 走看看