zoukankan      html  css  js  c++  java
  • zoj 2966 Build The Electric System

       就是套了个prim算法就ac了

    #include <stdio.h>
    #include <string.h>
    #define MaxInt 0x3f3f3f3f
    #define N 510
    /*创建map二维数组储存图表,low数组记录每2个点间最小权值,visited数组标记某点是否已访问*/
    int map[N][N],low[N],visited[N];
    int n;
    int prim()
    {
        int i,j,pos,min,result=0;
        memset(visited,0,sizeof(visited));
    /*从某点开始,分别标记和记录该点*/
        visited[1]=1;pos=1;
    /*第一次给low数组赋值*/
        for(i=1;i<=n;i++)
            if(i!=pos) low[i]=map[pos][i];
    /*再运行n-1次*/
        for(i=1;i<n;i++)
        {
    /*找出最小权值并记录位置*/
         min=MaxInt;
         for(j=1;j<=n;j++)
             if(visited[j]==0&&min>low[j])
             {
                 min=low[j];pos=j;
             }
    /*最小权值累加*/
        result+=min;
    /*标记该点*/
        visited[pos]=1;
    /*更新权值*/
        for(j=1;j<=n;j++)
            if(visited[j]==0&&low[j]>map[pos][j])
                low[j]=map[pos][j];
        }
        return result;
    }
     
    int main()
    {
        int i,v,j,ans,s,e,t,m;
           scanf("%d",&t);
           while(t--)
           {
               scanf("%d%d",&n,&m);
               /*所有权值初始化为最大*/
            memset(map,MaxInt,sizeof(map));
            for(i=1;i<=m;i++)
            {
                scanf("%d%d%d",&s,&e,&v);
                map[s+1][e+1]=map[e+1][s+1]=v;
            }
            ans=prim();
            printf("%d
    ",ans);    
        }
        return 0;
    }
  • 相关阅读:
    scp 跨服务器传数据
    Mongo启动失败解决方案
    centos7 NET模式配置虚拟机
    centos7虚拟机配置桥接模式
    Linux centos7 查看cpu 磁盘 内存使用情况
    centos7修改时间和时区
    fiddler培训
    docker学习笔记
    docker-ce安装官翻
    Nginx+Tomcat简单负载均衡
  • 原文地址:https://www.cnblogs.com/woshijishu3/p/3634293.html
Copyright © 2011-2022 走看看