zoukankan      html  css  js  c++  java
  • 复习题之医院设置

    2577 医院设置

     

     时间限制: 1 s
     空间限制: 32000 KB
     题目等级: 黄金 Gold
     
     
    题目描述 Description

    设有一棵二叉树,如下图

    其中,圈中数字表示结点居民的人口.圈边上数字表示结点编号,.现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻结点之间 的距离为1.如上图中,若医院建在:

    1处:则距离之和=4+12+2*20+2*40=136

    3处:则距离之和=4*2+13+20+40=81

    …….

    输入描述 Input Description

    第一行一个整数n,表示树的结点数。(n<=100)

    接下来的n行每行描述了一个结点的状况,包含三个整数,整数之间用空格(一个或多个)分隔,其中:第一个数为居民人口数;第二个数为左链接,为0表示表链接;第三个数为右链接。

    输出描述 Output Description

    一个整数,表示最小距离和。

    样例输入 Sample Input

    5

    13 2 3

    4 0 0

    12 4 5

    20 0 0

    40 0 0

    样例输出 Sample Output

    81

    数据范围及提示 Data Size & Hint

    分类标签 Tags 

     最短路 图论
     
    /*
    数据范围很小,用矩阵存图,用Floyed求最短路都飞快…… 
    */
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int a[110],g[110][110],n,le,ri;
    int main()
    {
        memset(g,127/3,sizeof(g));
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            g[i][i]=0;
            scanf("%d%d%d",&a[i],&le,&ri);
            if(le)g[i][le]=g[le][i]=1;
            if(ri)g[i][ri]=g[ri][i]=1;
        }
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++)
                if(i!=k)
                    for(int j=1;j<=n;j++)
                        if(i!=j&&j!=k&&g[i][k]+g[k][j]<g[i][j])
                            g[i][j]=g[i][k]+g[k][j];
        int minn=0x7fffffff;
        for(int i=1;i<=n;i++)
        {
            int total=0;
            for(int j=1;j<=n;j++)
                total+=g[i][j]*a[j];
            if(total<minn)minn=total;
        }
        printf("%d
    ",minn);
        return 0;
    } 
  • 相关阅读:
    December 23rd 2016 Week 52nd Friday
    December 22nd 2016 Week 52nd Thursday
    December 21st 2016 Week 52nd Wednesday
    December 20th 2016 Week 52nd Tuesday
    December 19th 2016 Week 52nd Sunday
    December 18th 2016 Week 52nd Sunday
    uva294(唯一分解定理)
    uva11624Fire!(bfs)
    fzu2150Fire Game(双起点bfs)
    poj3276Face The Right Way
  • 原文地址:https://www.cnblogs.com/EvilEC/p/6855286.html
Copyright © 2011-2022 走看看