zoukankan      html  css  js  c++  java
  • P1364医院设置

     

     1 #include<iostream>
     2 #include<cstdio>
     3 #define  inf  0x3f3f3f3f
     4 using namespace std;
     5 int map[105][105],a[105];
     6 int main(){
     7     int n;
     8     scanf("%d",&n);
     9     int x,y;
    10     for(int i=1;i<=n;i++){
    11         for(int j=1;j<=n;j++){
    12             if(i==j)
    13                 map[i][j]=0;
    14             else
    15                 map[i][j]=inf;    
    16         }
    17     }
    18     for(int i=1;i<=n;i++){
    19         scanf("%d%d%d",&a[i],&x,&y);
    20         map[i][x]=1;
    21         map[x][i]=1;
    22         map[i][y]=1;
    23         map[y][i]=1;
    24     }
    25     for(int k=1;k<=n;k++){
    26         for(int i=1;i<=n;i++){
    27             for(int j=1;j<=n;j++){
    28                 if(map[i][k]+map[k][j]<map[i][j])
    29                     map[i][j]=map[i][k]+map[k][j];
    30             }
    31         }
    32     }
    33     int mina=inf;
    34     for(int i=1;i<=n;i++){
    35         int total=0;
    36         for(int j=1;j<=n;j++){
    37             total+=map[i][j]*a[j];
    38         }
    39         if(total<mina)
    40             mina=total;
    41     }
    42     cout<<mina;
    43     return 0;
    44 } 

    这题数据量较小,用弗洛伊德就可以,用邻接矩阵存图,弗洛伊德计算出多源最短路径,然后枚举每一个点作为医院的时候的距离和,找到最小的,(简直就是纯暴力)

  • 相关阅读:
    bzoj 3747: [POI2015]Kinoman
    bzoj 3123: [Sdoi2013]森林
    bzoj 1901: Zju2112 Dynamic Rankings
    poj 1741 Tree
    bzoj 2152: 聪聪可可
    bzoj 2599: [IOI2011]Race
    bzoj 3697: 采药人的路径
    bzoj 2728: [HNOI2012]与非
    bzoj 2115: [Wc2011] Xor
    bzoj 3143: [Hnoi2013]游走
  • 原文地址:https://www.cnblogs.com/fate-/p/12812716.html
Copyright © 2011-2022 走看看