zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Windows7下安装与破解IntelliJ IDEA2017
    Maven的目录结构和常用命令
    Maven三种仓库的配置
    Maven的安装
    Maven是什么
    SQL执行计划分析2
    SQL执行计划分析
    PHP 单点登录实现方案
    PHP消息队列实现及应用
    fastAdmin根据状态显示是否显示操作按钮
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5385028.html
Copyright © 2011-2022 走看看