洛谷P1364医院设置

洛谷P1364 医院设置

医院设置

题目描述

设有一棵二叉树,如图:

其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为 1 1 1。如上图中,若医院建在 1 1 1 处,则距离和 = 4 + 12 + 2 × 20 + 2 × 40 = 136 =4+12+2\times20+2\times40=136 =4+12+2×20+2×40=136;若医院建在 3 3 3 处,则距离和 = 4 × 2 + 13 + 20 + 40 = 81 =4\times2+13+20+40=81 =4×2+13+20+40=81

输入格式

第一行一个整数 n n n,表示树的结点数。

接下来的 n n n 行每行描述了一个结点的状况,包含三个整数 w , u , v w, u, v w,u,v,其中 w w w 为居民人口数, u u u 为左链接(为 0 0 0 表示无链接), v v v 为右链接(为 0 0 0 表示无链接)。

输出格式

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

样例 #1

样例输入 #1

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

样例输出 #1

81

提示

数据规模与约定

对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 100 1 \leq n \leq 100 1n100 0 ≤ u , v ≤ n 0 \leq u, v \leq n 0u,vn 1 ≤ w ≤ 1 0 5 1 \leq w \leq 10^5 1w105

正确代码

//
// Created by 枫飘长安 on 2024/4/15.
//
#include <bits/stdc++.h>
using namespace std;
/***author: 枫飘长安*date: 2024/4/15*fileName: P1364.cpp*description: TODO**/
typedef long long ll;
const int MAXN = 1e6+10;int ans = 0x3f3f3f3f;
int n;
bool graph[105][105];
bool vis[105];
int num[105];struct node {int u,step;
};int bfs(int x) {memset(vis,0,sizeof(vis));queue<node> q;vis[x] = true;q.push((node){x,0});int sum = 0;while(!q.empty()){node temp=q.front();q.pop();for(int i=1;i<=n;i++)if(graph[temp.u][i]&&!vis[i]){vis[i] = true;q.push({i,temp.step+1});sum+=num[i]*(temp.step+1);}}return sum;
}int main (){cin >> n;for (int i = 1; i <= n; i++) {int l,r;cin>> num[i] >> l >> r;if (l != 0) {graph[i][l] = true;graph[l][i] = true;}if (r != 0) {graph[i][r] = true;graph[r][i] = true;}}for (int i = 1; i <=n; i++) {ans = min(ans,bfs(i));}cout << ans;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue--双向数据绑定原理

Vue采用数据劫持 发布者-订阅者模式实现双向数据绑定&#xff0c;实现逻辑图如下所示&#xff1a; 数据劫持 Vue 借助Object.defineProperty()来劫持各个属性&#xff0c;这样一来属性存取过程都会被监听到 发布者-订阅者模式 主要实现三个对象&#xff1a;Observer&#…

Android 系统编译 and 应用裁剪

平台应用编译 平台应用demo的Android.mk写法: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional# Only compile source java files in this apk. LOCAL_SRC_FILES := $(call all-java-files-under, src)LOCAL_PACKAGE_NAME := TestLOCAL_CER…

包装类初识泛型

一.包装类 在Java中, 基本类型不继承于Object类. 所以为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型.(包装类型相当于引用类型) 1.基本类型对应的包装类 byte -- Byteshort -- Shortint -- Integerlong -- Longfloat -- Floatdouble -- Doublech…

用c++实现串匹配问题、选择排序

5.2.2 串匹配问题 【问题】 给定两个字符串S和T&#xff0c;在主串S中查找子串T的过程称为串匹配(string matching,也称模式匹配&#xff09;&#xff0c;T称为模式。在文本处理系统、操作系统、编译系统、数据库系统以及 Internet 信息检索系统中&#xff0c;串匹配是使用最频…

便宜的dv ssl证书推荐

SSL数字证书是维护互联网安全的重要手段之一。SSL数字证书主要目的是保护客户端和服务器数据传输的安全&#xff0c;防止网站数据在传输过程中被窃取或者篡改。其次&#xff0c;SSL数字证书能够验证网站的身份和合法性&#xff0c;防止用户访问到假冒或钓鱼网站。此外&#xff…

引用拷贝、浅拷贝、深拷贝

在Java中&#xff0c;引用拷贝、浅拷贝和深拷贝的概念可以通过以下代码案例来说明&#xff1a; 引用拷贝&#xff08;直接赋值&#xff09; 案例&#xff1a; public class Main {public static void main(String[] args) {// 创建一个Person对象Person original new Perso…

C语言基础---指针的基本语法

概述 内存地址 在计算机内存中&#xff0c;每个存储单元都有一个唯一的地址(内存编号)。通俗理解&#xff0c;内存就是房间&#xff0c;地址就是门牌号 指针和指针变量 指针&#xff08;Pointer&#xff09;是一种特殊的变量类型&#xff0c;它用于存储内存地址。指针的实…

tomcat热部署热加载原理剖析

Tomcat作为一个流行的Java Web服务器&#xff0c;提供了热部署和热加载的功能&#xff0c;使开发人员能够在不重启服务器的情况下更新应用程序。在本文中&#xff0c;我们将深入探讨Tomcat热部署热加载的原理。 首先&#xff0c;让我们了解一下热部署和热加载的概念。热部署是…

每日一VUE——组件的生命周期

文章目录 VUE组件的生命周期生命周期钩子函数实例创建Teleport VUE组件的生命周期 组件生命周期 组件从创建到挂载、更新、到销毁的一系列过程被称为组件的生命周期。 生命周期函数 在组件的各个生命周期节点执行的函数&#xff0c;为生命周期钩子函数。 生命周期钩子函数…

问题 C: 实验11_11_链表匹配

题目描述 已知两个由正整数组成的无序序列A、B&#xff0c;每个序列的元素个数未知&#xff0c;但至少有一个元素。你的任务是判断序列B是否是序列A的连续子序列。假设B是“1 9 2 4 18”&#xff0c;A是“33 64 1 9 2 4 18 7”&#xff0c;B是A的连续子序列&#xff1b;假设B是…

详解QDir类的使用

之前讲读写文件的文章&#xff0c;有涉及部分QDir的使用&#xff0c;讲解感觉不够全面&#xff0c;特此增加一篇。 QDir 是 Qt 框架中用于操作文件和目录的类&#xff0c;它提供了跨平台的文件系统访问接口&#xff0c;可以进行目录遍历、文件查找、创建、删除、移动等操作。以…

vu3+vite+supermap(超图)实现可视域分析

<template><div class="dialog-draggable"><el-dialog draggable destroy-on-close v-if="changeRangeVisibility" :modal="false" v-model="changeRangeVisibility"title="可视域分析" width="24%&quo…

科技感画册制作方法,视觉效果直接拉满

随着科技的不断进步&#xff0c;科技感画册制作也变得更加精彩和引人注目。通过巧妙地运用先进的设计工具和技术&#xff0c;以及结合创新的视觉元素&#xff0c;可以轻松地将画册的视觉效果直接拉满。 那你想知道怎么制作吗&#xff1f;现在我来教你这个方法吧&#xff0c;方法…

tomcat类加载机制

Tomcat是一个流行的开源的Java Servlet容器&#xff0c;用于部署和运行Java Web应用程序。在Tomcat中&#xff0c;类加载机制是非常重要的&#xff0c;它决定了应用程序中的类是如何被加载和管理的。 Tomcat的类加载机制遵循了Java的类加载机制&#xff0c;但也有一些特殊的地…

jni,android

Windows下JNI的使用教程 - sysu_huangwei - 博客园 (cnblogs.com) JNI的使用大致有以下4个步骤&#xff1a; 一、在Java中写native方法 二、用javah命令生成C/C头文件 三、写对应的C/C程序实现头文件中声明的方法&#xff0c;并编译成库文件 四、在Java中加载这个库文件并使用…

六、新闻主题分类任务

以一段新闻报道中的文本描述内容为输入&#xff0c;使用模型帮助我们判断它最有可能属于哪一种类型的新闻&#xff0c;这是典型的文本分类问题。我们这里假定每种类型是互斥的&#xff0c;即文本描述有且只有一种类型&#xff0c;例如一篇新闻不能即是娱乐类又是财经类&#xf…

JavaScript教程(十七)--- 模块化

JavaScript 模块 这篇指南会给你入门 JavaScript 模块的全部信息。 模块化的背景 JavaScript 程序本来很小——在早期&#xff0c;它们大多被用来执行独立的脚本任务&#xff0c;在你的 web 页面需要的地方提供一定交互&#xff0c;所以一般不需要多大的脚本。过了几年&…

企业Linux常见用户命令/补充Linux文件系统删除原理/userdel(故障原理/etc/skel)详谈-9628字

想提高自己想拿20k以上冲冲冲&#xff01;&#xff01;&#xff01;&#xff0c;想要从0 学习到linux架构师可以关注小编专栏 本来都很卷&#xff0c;你还不努力&#xff0c;想拿高薪&#xff0c;付出行动! linux难点第一阶段非常难 1.命令多复杂&#xff08;大家抓不住重点&am…

Python爬虫与数据可视化论文课题免费领取咨询

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…