首页 > 其他分享 >3511. 路由最大耗时路径

3511. 路由最大耗时路径

时间:2023-05-11 16:45:02浏览次数:49  
标签:int graph 3511 样例 visits 耗时 now 节点 路由

题目描述

假设存在一个二叉树型的路由器网络,经过每个路由器会有耗时。由于我们要对网络进行优化,需要找出这个树型路由器网络中的最大耗时的两个节点间的路径。

路径被定义为一条从任意节点出发,达到任意节点的序列,同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

耗时是路径中各路由器节点值的总和。

解答要求时间限制:1000ms, 内存限制:256MB 输入

第一行一个数n(1≤n≤16383),表示路由器网络的节点数。第二行是完全二叉树的数组表示形式,0 <= val <= 2000。

输出

树型路由器网络中最大耗时的两节点路径。

样例

输入样例 1 

3
1 2 3

 

输出样例 1

6

  

提示样例 1


2 -> 1 -> 3 耗时最大, 2 + 1 + 3 = 6



输入样例 2 

7
1 1 1 0 0 15 20

 

输出样例 2

28

  

提示样例 2


15 + 1 + 12 = 28

 

由于数据量较小,直接对于每个叶节点进行DFS+回溯即可,若要追求高效,可以进行剪枝或直接DP

 

 1 // we have defined the necessary header files here for this problem.
 2 // If additional header files are needed in your program, please import here.
 3 #include<bits/stdc++.h>
 4 using namespace std;
 5 int node[40000];
 6 bool visits[40000];
 7 int mmax=-1;
 8 void DFS(int *graph,int now,int sum) {
 9     mmax=max(sum+graph[now],mmax);
10     visits[now] = true;
11     if (graph[now*2]>=0 && visits[now*2] == false) { 
12         DFS(graph,now*2,sum+graph[now]);
13     }
14     if (graph[now*2+1]>=0 && visits[now*2+1] == false) {
15         DFS(graph,now*2+1,sum+graph[now]);
16     }
17     if (now != 1 && visits[now/2] == false) {
18         DFS(graph,now/2,sum+graph[now]);
19     }
20     visits[now] = false;
21 }
22 int main()
23 {
24 
25     // please define the C++ input here. For example: int a,b; cin>>a>>b;;
26     
27     // please finish the function body here.
28     
29     // please define the C++ output here. For example:cout<<____<<endl;
30     int n;
31 
32     
33     memset(node,-1,sizeof(node));
34     memset(visits,false,sizeof(visits));
35     cin>>n;
36     for (int i=1;i<=n;++i){
37         cin>>node[i];
38     }
39     for (int i=n/2+1;i<=n;++i){
40         DFS(node,i,0);
41     }
42     cout<<mmax;
43     return 0;
44 }

 

 

标签:int,graph,3511,样例,visits,耗时,now,节点,路由
From: https://www.cnblogs.com/coderhrz/p/17391531.html

相关文章

  • .Net Core 4. VS2022 + Core6.0 + Razor 设置model特性改变显示的属性名称,通过@page指
    通过Model的特性修改显示的内容/规则目前在Index页面上,显示的表头都是model的字段名,在实际项目中通常不会这么做,这里我们修改一下Model部分来让表头显示的更加直观。1.引入System.ComponentModel.DataAnnotations.Schema,也可以事后根据提示自动添加。2.[Display(Na......
  • 最佳实践:路径路由匹配规则的设计与实现
    最佳实践:路径路由匹配规则的设计与实现作者:哲思时间:2023.5.9邮箱:[email protected]:zhe-si(哲思)(github.com)前言时间一晃研究生都过去大半年了,学了些东西,也做了些项目,借着博客总结一下。这次先聊一个简单的话题开个头。开发中,常用形似“a/b/c”的描述方式来描述......
  • Vue的Router 在首页获取 fullPath 一直都是根路由‘/‘ ?
    在main.j中获取的this.$route.fullpath一直都是'/',因为给路由fullPath赋值是微任务,我们直接获取肯定只能拿到根路由“/”;解决方案:1.给路由fullPath赋值是微任务,那么只需要通过宏任务获取fullPath就可以了,setTimeout(()=>{console.log(this.$route.fullPath)},2000) 2......
  • Umi配置路由
    一、Umi路由的概念在Umi中,你可以在 .umirc.ts 文件中使用 routes 属性来配置路由。routes 属性是一个数组,每个元素都表示一个路由对象。每个路由对象都包含以下属性:path:表示路由路径,可以是字符串或正则表达式。component:表示路由组件的路径,可以是字符串或函数。r......
  • 1、华为路由器百兆或千兆口解决IP配置问题
    遇到的问题:通常情况下,华为路由器千兆口可以配置IP,无需划分VLAN都可以。但是,百兆口如果是不支持三层交换的话,就无法直接进行IP配置。此时,需要配置VLAN,将VLAN加入端口,并且pvid还得加上。 注意:交换机和路由器都类似。最后就是不同网段,应使用相关协议、配置路由等。......
  • 【数据库测试】【shell脚本】查询同一个SQL执行多次,并统计每次耗时
    场景说明在数据库查询中会常见coldrun与hotrun,hotrun是指将同一个SQL连续运行多遍。运行脚本创建一个run.sh直接复制如下脚本-注意修改数据库的连接IP与密码等-queries2.sql存放查询的SQL,请将queries2.sql文件与run.sh放在同一个目录下,若不在同一个目录,注意改SQL的文件......
  • Vue路由跳转时的动画效果
    1.写一个layout组件,降<router-view/>包裹在transition标签里,实现路由跳转时的动画 2.在router/index.js里面引入该组件,并放在component:layout这里,功能完成 3.transition是vue的封装组件,具体可参考官网 https://cn.vuejs.org/guide/built-ins/transition.html#css-based-......
  • Docker安装Openwrt开启旁路由模式
    准备:HK1BOX一个或其他linux设备安装好Armbian或Debian或Ubuntu或其他安装好Docker和Portainer管理面板并更换国内源  (不会的看我之前的教学视频)原作者Github地址:https://github.com/SuLingGG/OpenWrt-Docker设置网络:通过SSH登录到你的Linux设备,把网卡混杂模式打开 ......
  • 关于vue中动态路由404 为什么要放最下面
    在vue在路由匹配机制中,对路由的匹配是从上到下的,通常使用{path:'*',redirect:'/404',hidden:true}进行404页面跳转,*代表获取所有路径标识,如果放在前面就会提前进行匹配到404页面,从而无法匹配到正确页面。所以我们需要将其放在最后,只有当页面不存在的时候再去匹配404页面,进......
  • vue中 vuex踩坑笔记-刷新后动态路由不渲染
    在vue中,vuex经常用于存储公共状态,特别是在登录的时候获取token再保存,这个时候如果是做的动态路由,由于vuex的特性在你刷新后会清除你的所有操作的存储。这时候,存储的token和动态路由都会被清掉。如何解决这个问题:1.结合session或者cookie(通常用这个),token保存的时候,除了在vuex中......