zoukankan      html  css  js  c++  java
  • ZOJ1586

    题意:有n个人,每个人都有自己喜欢用的网络适配器,要你求连接所有人的最小费用

            构图的时候每条边的权值等于 两个人用的适配器的费用加上两个人之间网线的费用,然后求最小生成树

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <algorithm>
     6 using namespace std;
     7 #define inf 9999999
     8 #define N 1005
     9 int n,g[N][N],vis[N],dis[N];
    10 int cos[N];
    11 
    12 int prim(int st)
    13 {
    14     for(int i=1; i<=n; i++)
    15     {
    16         dis[i] = g[i][st];
    17         vis[i] = 0;
    18     }
    19     dis[st] = 0 ; vis[st] = 1;
    20     int cost = 0;
    21     for(int T=1; T<n; T++)
    22     {
    23         int mindis = inf , idx = -1;
    24         for(int i=1; i<=n; i++)
    25         {
    26             if(!vis[i]&&dis[i] < mindis)
    27             {
    28                 mindis = dis[i];
    29                 idx = i;
    30             }
    31         }
    32         cost += mindis;
    33         if(idx == -1) return -1;
    34         vis[idx] = 1;
    35         for(int i=1; i<=n; i++)
    36         {
    37             if(!vis[i]&& dis[i]>g[i][idx])
    38             {
    39                 dis[i] = g[i][idx];
    40             }
    41         }
    42     }
    43     return cost;
    44 }
    45 
    46 int main()
    47 {
    48     int T,val;
    49     scanf("%d",&T);
    50     while(T--)
    51     {
    52         for(int i=1; i<=n; i++)
    53         for(int j=1; j<=n; j++)
    54         {
    55             if(i==j) g[i][j] =0;
    56             else g[i][j]= inf;
    57         }
    58         
    59         scanf("%d",&n);
    60         for(int i=1; i<=n; i++)
    61         scanf("%d",&cos[i]);
    62         for(int i=1; i<=n; i++)
    63         for(int j=1; j<=n; j++)
    64         {
    65             scanf("%d",&val);
    66             if(i!=j) g[i][j] = val + cos[i] + cos[j];
    67         }
    68         printf("%d
    ",prim(1));
    69     }
    70     return 0;
    71 }
    View Code
  • 相关阅读:
    全面解析Vue.nextTick实现原理
    js 宏任务和微任务
    模拟实现ES6的set类
    git客户端出现libpng warning: iCCP: known incorrect sRGB profile
    js封装、继承
    js单例模式
    并行运行多个python虚拟机
    关于场景服务的一些想法
    关于不能对闭包函数进行热更新的问题
    Python string interning原理
  • 原文地址:https://www.cnblogs.com/ar940507/p/3224190.html
Copyright © 2011-2022 走看看