题目描述 Description

c国边防军在边境某处的阵地是由n个地堡组成的。工兵连受命来到阵地要进行两期施工。

第一期的任务是挖掘暗道让所有地堡互联互通。现已勘测设计了m条互不相交的暗道挖掘方案,如果这m条暗道都实施挖掘,肯定能达到互联互通的目的。事实上,适当选择其中n-1个方案挖掘,就能实现互联互通,即从每个地堡出发都能到达其他任何一个地堡(允许经过别的地堡)。

连长精心谋算,在m个设计规划中选取了挖掘总距离最短且能保证互联互通的若干个暗道规划实施了挖掘,完成了第一期的施工任务后又接受了第二期的施工任务,要求选择一个地堡进行扩建改造,使其能向每个地堡提供弹药。为了让弹药供应更及时、更快捷,从改扩建的地堡到最远地堡的距离(称为最远输送距离)应当尽量小。

你的任务是先求出第一期施工挖掘的总距离,再求改扩建地堡最远输送距离的最小值。

输入描述 Input Description

其中第一行是n和m,m>=n
下面的m行每行3个数xi、yi、zi,表示xi到yi的距离是zi
  zi<1000000且m个距离互不相等

输出描述 Output Description

共包含两行,每行一个整数,
第一行是第一期的挖掘总距离,第二行是最远输送距离的最小值。

样例输入 Sample Input

4 5
1 2 1
2 3 2
3 4 3
4 1 4
3 1 5

样例输出 Sample Output

6
3

数据范围及提示 Data Size & Hint

【样例说明】
第一期挖掘1到2、2到3和3到4的3条暗道,第二期选择3号地堡进行改扩建,最远输送距离是3
【数据规模】
60%的数据 n<10且m<20
80%的数据 n<1000且m<2000
100%的数据 n<100000且m<200000

________________________________________________________________________________________________________________

树形动归

点i到大最远的点有两种可能,要么是它下面的叶子,也就是向西走,要么在父亲方向,也就是向上走。

向下的方向f[i]=max(f[j]+e[i->j].w)

向上的方向ff[i]=max(ff[fa[i]],f[son[fa[i](不是i点)])+e[i->fa[i]].w

_________________________________________________________________________________________________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=100005;
4 const int maxm=200010;
5 int n,m;
6 struct edge
7 {
8 int u,v,w,nxt;
9 }e[maxm<<1],ee[maxm];
10 int head[maxn],js;
11 void addage(int u,int v,int w)
12 {
13 e[++js].u=u;e[js].v=v;e[js].w=w;
14 e[js].nxt=head[u];head[u]=js;
15 }
16 int fa[maxn];
17 long long ans;
18 int find(int x)
19 {
20 if(fa[x]==x)return x;
21 return fa[x]=find(fa[x]);
22 }
23 bool un(int u,int v)
24 {
25 u=find(u),v=find(v);
26 if(u==v)return 0;
27 fa[v]=u;
28 return 1;
29 }
30 long long dl1[maxn],dl2[maxn],ul[maxn];
31 void dfs(int u,int fa)
32 {
33 for(int i=head[u];i;i=e[i].nxt)
34 {
35 int v=e[i].v;
36 if(v!=fa)
37 {
38 dfs(v,u);
39 if(dl1[v]+e[i].w>dl1[u])dl2[u]=dl1[u],dl1[u]=dl1[v]+e[i].w;
40 else if(dl1[v]+e[i].w>dl2[u])dl2[u]=dl1[v]+e[i].w;
41 }
42 }
43 }
44 void dfs2(int u,int fa)
45 {
46 for(int i=head[u];i;i=e[i].nxt)
47 {
48 int v=e[i].v;
49 if(v!=fa)
50 {
51 if(dl1[v]+e[i].w==dl1[u])ul[v]=dl2[u];
52 else ul[v]=dl1[u];
53 if(ul[u]>ul[v])ul[v]=ul[u];
54 ul[v]+=e[i].w;
55 dfs2(v,u);
56 }
57 }
58 }
59 bool mycp(edge a,edge b)
60 {
61 return a.w<b.w;
62 }
63 int main()
64 {
65 scanf("%d%d",&n,&m);
66 for(int i=1;i<=n;++i)fa[i]=i;
67 for(int u,v,w,tp=0,i=0;i<m;++i)
68 {
69 scanf("%d%d%d",&u,&v,&w);
70 ee[i].u=u;ee[i].v=v;ee[i].w=w;
71
72 }
73 sort(ee,ee+m,mycp);
74 for(int i=0;i<m;++i)
75 {
76 int u=ee[i].u,v=ee[i].v,w=ee[i].w;
77 if(un(u,v))
78 {
79 ans+=w;
80 addage(u,v,w);
81 addage(v,u,w);
82 }
83 }
84 dfs(1,0);
85 dfs2(1,0);
86 long long ans2=0x7ffffffffffffff;
87 for(int i=1;i<=n;++i)
88 {
89 int tp=max(ul[i],dl1[i]);
90 ans2=ans2<tp?ans2:tp;
91 }
92 printf("%lld\n%lld",ans,ans2);
93 return 0;
94 }

codevs1700 施工方案第二季的更多相关文章

  1. codevs——1700 施工方案第二季

    1700 施工方案第二季 2012年市队选拔赛北京  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description c国边防 ...

  2. codevs 1700 施工方案第二季

    1700 施工方案第二季 2012年市队选拔赛北京  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description c国边防 ...

  3. CODEVS——T 1700 施工方案第二季

    http://codevs.cn/problem/1700/ 2012年市队选拔赛北京  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果   ...

  4. COJ262 HDNOIP201206施工方案

    HDNOIP201206施工方案 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 c国边防军在边境某处的阵地是由n个地堡组成的. ...

  5. HDNOIP201206施工方案

    HDNOIP201206施工方案 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 c国边防军在边境某处的阵地是由n个地堡组成的. ...

  6. [转][南京米联ZYNQ深入浅出]第二季更新完毕课程共计16节课

    [南京米联]ZYNQ第二季更新完毕课程共计16节课 [第二季ZYNQ]                                                                  ...

  7. 【第二季】CH11_ ZYNQ软硬调试高级技巧

    [第二季]CH11_ ZYNQ软硬调试高级技巧 软件和硬件的完美结合才是SOC的优势和长处,那么开发ZYNQ就需要掌握软件和硬件开发的调试技巧,这样才能同时分析软件或者硬件的运行情况,找到问题,最终解 ...

  8. [第二季ZYNQ] [南京米联]ZYNQ第二季更新完毕课程共计16节课

    ZYNQ第二季更新完毕课程共计16节课全部免费 [第二季ZYNQ]                                                                    ...

  9. 《舌尖上的中国》第二季今日首播了,天猫食品也跟着首发,借力使力[bubuko.com]

    天猫旗下的天猫食品与央视CCTV-1栏目<舌尖上的中国>第二季(以下简称“舌尖2”)达成合作,天猫食品成为舌尖2独家合作平台,同步首发每期 节目中的食材和美食菜谱,舌尖2摄制组还将为同步上 ...

随机推荐

  1. Springboot 源码解析-自定装配

    面试官经常会问你知道springboot的自定装配吗?它是怎么实现的吗?今天我们就来通过源码一起分析下它吧.首先我们先搭建一个springboot的简单项目,找到启动类, 然后通过这个注解我们进入到@ ...

  2. Keil4 uVision软件生成hex文件

    keil4下载地址:http://www.pc6.com/softview/SoftView_236836.html 按图操作即可,注意文件夹选择. 1.选择工程,选择第一个new uvision p ...

  3. 仅4步,就可通过SQL进行分布式死锁的检测与消除

    摘要:本文主要介绍在 GaussDB(DWS) 中,如何通过 SQL 语句,对分布式死锁进行检测和恢复. 分布式数仓应用场景中,我们经常遇到数据库系统 hang 住的问题,所谓 hang 是指虽然数据 ...

  4. 简单session实现

    简单的session校验实现 利用拦截器实现 package com.ryh.blog.intecepter; import org.springframework.core.Ordered; imp ...

  5. JavaDailyReports10_13

    今天完成了课堂测试二的内容要求,开阔了编程的思路,学到了很多程序设计思想,为以后的学习提供了很多帮助. 明天开始继续完善四则运算的程序,并且开始JavaWeb的学习!

  6. 企业集群架构-02-Rsync

    Rsync 目录 Rsync Rsync基本概述 Rsync应用场景 Rsync传输模式 Rsync服务使用 (1)服务端安装Rsync (2)服务端配置Rsync (3)服务端创建用户 (4)服务端 ...

  7. 短信平台软件开发,短信发送平台销售,短信软件源码,G客短信发送平台

    一:web短信平台组成  需要短信软件平台源码的联系QQ:290615413 vx:290615413  整套短信系统平台还是由B/S(客户端+后台,取消了以前C/S的管理后台) ,C/S发送服务端和 ...

  8. GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?

    目录 ✍前言 本文提纲 版本约定 ✍正文 GMT:格林威治时间 凭什么格林威治作为标准时间? 地球自转 中国有哪几个时区? 美国有哪几个时区? GMT和Http协议的渊源 UTC:世界标准时间 UTC ...

  9. 【MySQL】1托2 ab复制 一个主机两个slave操作手册

    所有实验环境全部是新建的,如果不是新建的mysql一定要备份!!! 环境:CentOS release 6.8 x64 master:192.168.25.100 slave1: 192.168.25 ...

  10. leetcode230. 二叉搜索树中第K小的元素

    题目链接: https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/ 题目: 给定一个二叉搜索树,编写一个函数 kthSmalle ...