• Prim算法求最大权,POJ(2485)


    题目链接:http://poj.org/problem?id=2485

    解题报告:

    这里有一点要注意的是,第一个点时,dis数组还没有初始化,还全部为inf。第一次来到更新权时,才把邻接矩阵的数据存到dis中。

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <memory.h>
    #include <algorithm>
    
    using namespace std;
    
    #define N 10005
    #define inf 100010
    
    int a[N][N],ans;
    
    bool vis[N];
    int dis[N],n;
    
    bool Prim()
    {
        ///初始化每条路没走过
        memset(vis,0,sizeof(vis));
        
        ///初始化到每一点的权
        for(int i=1; i<=n; i++)
        {
            dis[i]=inf;
        }
    
        ans=0;
        
        ///从第一个点搜起。到达自己的权为0
        dis[1]=0;
    
        ///搜索每个节点,加入到集合中来
        for(int i=1; i<=n; i++)
        {
            int tmp=inf,k=0;
    
            ///搜索每个点,找i到达下一点的最小权
            for(int j=1; j<=n; j++)
            {
                if(!vis[j]&&dis[j]<tmp)
                {
                    tmp=dis[j];
                    k=j;
                }
            }
            
            if(tmp==inf)        ///搜索不成功
            {
                return false;
            }
    
            vis[k]=true;        ///标记走过
           
            ans=max(ans,dis[k]);
            
            ///更新到每个节点的最小权
            for(int j=1; j<=n; j++)
            {
                if(!vis[j]&&dis[j]>a[k][j])
                {
                    dis[j]=a[k][j];
                }
            }
        }
    }
    
    int main()
    {
        int Case;
        scanf("%d",&Case);
        while(Case--)
        {
            scanf("%d",&n);
            ans=0;
            for(int i=1; i<=n; i++)
            {
                for(int j=1; j<=n; j++)
                {
                    scanf("%d",&a[i][j]);
                }
            }
            Prim();
            cout<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    第六日会议博客
    第五日会议博客
    第四日会议博客
    第三日会议博客
    第二日会议博客
    第一日会议博客
    Alpha总结展望——前事不忘后事之师
    请坐,我们是专业团队——Alpha冲刺
    微信小程序测试总结
    WeChair项目Beta冲刺(4/10)
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5385028.html
Copyright © 2020-2023  润新知