题目描述

设有一棵二叉树,如图:

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

若医院建在1 处,则距离和=4+12+2*20+2*40=136;若医院建在3 处,则距离和=4*2+13+20+40=81……

输入输出格式

输入格式:

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

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

输出格式:

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

输入输出样例

输入样例#1:

5
13 2 3
4 0 0
12 4 5
20 0 0
40 0 0

输出样例#1: 
 81
简单!看着 n 的范围 Floyed 都可以吧,不过还是坚持用了SPFA。

思路:有几个人那这个节点的边权就给乘以几,作为他的边权,要确定哪个节点最合适,那就每个节点跑跑最短路试试吧,确定总距离最小的那个结点。(听起来好像有点暴力,不过在luogu上跑到了0ms,哎呦,不错哦)

废话不多说上代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<cmath>
using namespace std;
int n,head[10001],tot,shu[101],ans,p;
struct ahah{int nxt,to,w;
}edge[1001];            //记住数组要开大一点。
void add(int x,int y,int z)
{edge[++tot].nxt=head[x];edge[tot].to=y;edge[tot].w=z;head[x]=tot;
}                        //链表建边。
queue <int> que;
int dis[1001],vis[1001],sum;
void spfa(int s)
{for(int i=1;i<=p;i++) dis[i]=249999;memset(vis,0,sizeof(vis));dis[s]=0;vis[s]=1;que.push(s);while(!que.empty()){int cur=que.front() ;vis[cur]=0; que.pop() ;for(int i=head[cur];i;i=edge[i].nxt){int now=edge[i].to;if(dis[now]>dis[cur]+edge[i].w){dis[now]=dis[cur]+edge[i].w;if(!vis[now]){vis[now]=1;que.push(now); }}}} sum=0;for(int i=1;i<=p;i++)sum+=dis[i]*shu[i];            //统计总长度。
}
int main()
{int vv=999999;scanf("%d",&n);p=n;int x,y,z;while(n--){scanf("%d%d%d",&z,&x,&y);ans++;shu[ans]=z;add(ans,x,1);add(x,ans,1);    //双向建边。 add(ans,y,1);add(y,ans,1);}for(int i=1;i<=p;i++){spfa(i);                    //挨个边跑跑。 vv=min(vv,sum);}printf("%d",vv);
}

此为个人略解,转载请标明出处:http://www.cnblogs.com/rmy020718/p/8834789.html

  那年你一袭袈裟相思放下,可曾记得我儒染风华青丝白发,一语落罢,却是一盏清茶。

 

转载于:https://www.cnblogs.com/rmy020718/p/8834789.html

luogu P1364 医院设置相关推荐

  1. 洛谷P1364 医院设置

    LITTLESUN的第一道图论,撒花~~ 题目链接 这道题是Floyd的板子题 注意对于矩阵图的初始值赋值要全部赋值成最大值 十六进制的最大值表示方式是0x3f3f3f3f memset(G,0x3f ...

  2. 树讲解(5)——医院设置

    洛谷--P1364 医院设置 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定 ...

  3. 【最短路】【Floyed】医院设置(ssl 1614)

    医院设置 ssl 1614 题目大意: 有n个点,在一个点上安医院,使这个点到其他点的最短路之和最小 原题: Description 设有一棵二叉树(如右图).其中,圈中的数字表示结点中居民的人口.圈 ...

  4. 分布式医疗挂号系统(二) | 开发医院设置微服务模块

    本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统.本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果.全局异常.全局日志进行了统一处理. 同时,为了方便进行访问测试, ...

  5. 分布式医疗挂号系统(七) | 开发医院设置页面

    @[toc](分布式医疗挂号系统(七) | 开发医院设置页面) 在分布式医疗挂号系统中,前端主要使用的两个技术是Vue和ElementUI.医院设置微服务模块的后端之前已经完成,现在需要借助Vue+E ...

  6. 后台系统-医院设置信息接口开发

    后台系统-医院设置接口-需求和准备 1.需求 2.表结构 3.医院模块开发 3.1. 搭建医院模块service-hosp 3.2.引入依赖 3.3.添加配置文件application.propert ...

  7. 信息学奥赛一本通|1338:【例3-3】医院设置

    1338:[例3-3]医院设置 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6449 通过数: 4362 [题目描述] 设有一棵二叉树(如下图),其中圈中的数字表示结点中居民的 ...

  8. 二叉树——医院设置(洛谷 P1364)

    题目选自洛谷P1364 从指定结点开始,使用DFS,对于某个结点来说,搜索的深度就是源点到这个结点的距离,单点贡献(该点所有居民到医院的距离之和)就是源点到这个结点的距离乘上该点的居民数量:然后加上自 ...

  9. Luogu P3853 路标设置

    这大概是我第一次发难题的题解吧-- 这道题我整了好几天,才过. 题面 &\&& 题解 如果单纯地思考怎么拿部分分,那这个题并不难,暴力模拟一遍就行了,小样例能过. 如果你要拿, ...

  10. 信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构—— 1338:【例3-3】医院设置

    时间限制: 1000 ms 内存限制: 65536 KB 提交数: 1018 通过数: 719 [题目描述] 设有一棵二叉树(如图3-8,其中圈中的数字表示结点中居民的人口,圈边上数字表示结点编号.现 ...

最新文章

  1. Python带你轻松进行网页爬虫
  2. android实现计时器
  3. 分库分表的类型和特点
  4. superset可视化-Bar Chart
  5. 项目需求讨论--可能是用InputFilter来做的最好的金额限制
  6. 集成学习与随机森林练习题
  7. Lattice Diamond软件使用
  8. 美国大学课堂的契约精神(纽约时报中文网 )
  9. 浅析《人间失格》中的经典句段
  10. Kaggle Quora-如何快速进行数据分析 #0
  11. 如何从一根普通八芯网线如何分出电话线和网络线?
  12. 基于B树的图书管理系统(C语言)(含完整代码)
  13. python pip 查看一个package的所有版本
  14. C++运算符重载(类内、外重载)
  15. sku设计mysql_如何设计SKU表结构
  16. 小生云服务器,HobitLab#2--云服务器的有效利用之搭建tiny tiny RSS
  17. java中 exe是什么文件_从文件位置运行Java中的.exe文件
  18. 使用pytorch可视化中间层的结果
  19. @Slf4j是啥,它是干啥的
  20. 发明专利和实用新型专利有什么不同?

热门文章

  1. 不等式解集怎么取_6.初中数学:一个不等式的解集,都是另一个不等式的解,求a的取值范围?...
  2. 基本系统设备_正规全体灭火系统承包资质品质更好_天霖工程
  3. c语言乘法怎么手写,发现要实现手写乘法计算过程也让我头疼
  4. centos7安装uwsgi报错_nginx + uwsgi 发布django项目!(linux为centos7)
  5. python try except continue_python中 try、except、finally执行顺序
  6. 2013年计算机考试题库,2013年计算机三级数据库上机冲刺试题一及答案
  7. 山大824计算机基础,山大考研辅导班:山东大学2020年824计算机基础考研自命题科目考试大纲...
  8. python对象和类_Python面向对象(一)类与对象
  9. python笔试和面试题汇总(免费下载)
  10. 阿里云云计算 14 使用阿里云中的OSS