医院设置x
设有一棵二叉树,如下图
其中,圈中数字表示结点居民的人口.圈边上数字表示结点编号,.现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻结点之间 的距离为1.如上图中,若医院建在:
1处:则距离之和=4+12+2*20+2*40=136
3处:则距离之和=4*2+13+20+40=81
…….
第一行一个整数n,表示树的结点数。(n<=100)
接下来的n行每行描述了一个结点的状况,包含三个整数,整数之间用空格(一个或多个)分隔,其中:第一个数为居民人口数;第二个数为左链接,为0表示表链接;第三个数为右链接。
一个整数,表示最小距离和。
5
13 2 3
4 0 0
12 4 5
20 0 0
40 0 0
81
无
#include<iostream>
#include<cstring> using namespace std; /*
样例
5
13 2 3
4 0 0
12 4 5
20 0 0
40 0 0
*/ int n,i,j,k,x,y; int a[],g[][]; /*
a数组储存第几个结点编号,
g数组储存其所对的左右孩子编号,
输入时,
若都为0,则说明无左右孩子(一个都没有),
若左为0,则说明左边无孩子,右同;
*/ int main() {
long long t,minn=;
cin>>n;
for(i=; i<=n; i++) {
cin>>a[i]>>x>>y;
if (x!=) g[i][x]=g[x][i]=;//左不为0,说明左边有孩子,做标记
if (y!=) g[i][y]=g[y][i]=;//右不为0,说明右边有孩子,做标记
}
for(i=; i<=n; i++)
for(j=; j<=n; j++)
if(g[i][j]!=) g[i][j]=;//这些都无孩子
for(k=; k<=n; k++)
for(i=; i<=n; i++)
for(j=; j<=n; j++)
if((i!=k)&&(i!=j)&&(j!=k)&&(g[i][k]+g[k][j]<g[i][j]))
g[i][j]=g[i][k]+g[k][j];
for(i=; i<=n; i++) {
for(j=; j<=n; j++)
if(i!=j) t=t+g[i][j]*a[j];
if(t<minn) minn=t;//minn为最小
t=;//清0,便于下一次继续统计是否为最小
}
cout<<minn;
}
医院设置x的更多相关文章
- codevs 2577 医院设置
2577 医院设置 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 设有一棵二叉树,如下图 其中,圈中数字表示结点居民的人口.圈边 ...
- P1364 医院设置 (补锅,memset初始化较大值不可用0x7fffffff )
P1364 医院设置 题解 弗洛伊德水过 注意初始化一个大数 0x3f 可以,0x5f 好像也可以,但是0x7fffffff 我是真的炸了,初始化为-1 (后面补锅有详细解释) 代码 #include ...
- 【6.10校内test】T2 医院设置
医院设置[题目链接] 感觉我超废 我是一个连floyd都不会写了的灵魂OI选手qwq(考场上写了半天spfa然后写炸了(微笑)) floyd的暴力: 1.先建树:用邻接矩阵存.存之前记得先初始化为IN ...
- 【模板】树的重心 洛谷P1364 医院设置
P1364 医院设置 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接 ...
- 洛谷P1364 医院设置(Floyd)
题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为l.如上 ...
- [Swust OJ 412]--医院设置(floyd算法)
题目链接:http://acm.swust.edu.cn/problem/412/ Time limit(ms): 1000 Memory limit(kb): 65535 Description ...
- P1364 医院设置
题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为l.如上 ...
- [LUOGU] 1364 医院设置
设有一棵二叉树,如图: [我是图] 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为1.如 ...
- P1364 医院设置 洛谷
https://www.luogu.org/problem/show?pid=1364 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结 ...
随机推荐
- SDL2 程序 编译 错误 及 解决方案
main函数应写为int main( int argc, char* args[] )而不是int main()形式 链接库时应注意顺序 mingw32;SDL2main;SDL2; ...
- 《深入理解 java 虚拟机》学习 -- 内存分配
<深入理解 java 虚拟机>学习 -- 内存分配 1. Minor GC 和 Full GC 区别 概念: 新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java ...
- react中数据持久化缓存redux-persist
一.安装redux-persist: npm install redux-persist --save 二..babelrc中增加redux-persist配置: "plugins" ...
- 关于HA(2.102 -2.103 服务器排障)
关于处理RHCA故障的报告: ,2.102 和 2.103 两台机器在重启之后拉不起来 原因是这两台服务比较怪 先要启动service rpcbind restart 然后再要起service nfs ...
- Java Web DNS域名解析
一.什么是DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串 ...
- 【原创】大数据基础之Gobblin(2)持久化kafka到hdfs
gobblin 0.10 想要持久化kafka到hdfs有很多种方式,比如flume.logstash.gobblin,其中flume和logstash是流式的,gobblin是批处理式的,gobbl ...
- 【原创】大叔经验分享(58)kudu写入压力大时报错
kudu写入压力大时报错 19/05/18 16:53:12 INFO AsyncKuduClient: Invalidating location fd52e4f930bc45458a8f29ed1 ...
- VS2019 快捷键
工欲善其事,必先利其器,整理了下VS最常用的快捷键,查看了不少资料,汇总了下,没有的自己补充,可以打印,用Excel编辑的. 可编辑版本下载:Excel文件下载 你可能需要查询其他的快捷键,MSDN介 ...
- ES6基础之——new Set
Set 对象存储的值总是唯一的 Set 对象方法 方法 描述 add 添加某个值,返回Set对象本身. clear 删除所有的键/值对,没有返回值. delete 删除某个键,返回true.如果删除失 ...
- shell 中执行Oracle查询和执行存储过程
[oracle@master2 test]$ more b.sh #!/bin/sh #数据库地址 ip=192.168.1.250 port sid=orcl username=c##scott p ...