bzoj3743 [Coci2015]Kamp 常州模拟赛d6t2
3743: [Coci2015]Kamp
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 484 Solved: 229
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 2 4
1 3 1
2 5 1
2 4 2
4 7 3
4 6 2
3
7
Sample Output
15
10
13
16
15
10
HINT
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- const int maxn = ;
- int n, k,head[maxn],to[maxn * ],nextt[maxn * ],w[maxn * ],tot = ,ner[maxn],son[maxn];
- long long mind[maxn],maxd[maxn],secd[maxn],d[maxn],sum;
- bool flag[maxn],vis[maxn];
- void add(int x, int y, int z)
- {
- w[tot] = z;
- to[tot] = y;
- nextt[tot] = head[x];
- head[x] = tot++;
- }
- bool dfs1(int x) //找树
- {
- vis[x] = ;
- for (int i = head[x]; i; i = nextt[i])
- {
- int v = to[i];
- if (!vis[v])
- {
- if (dfs1(v))
- {
- flag[x] = ;
- sum += w[i];
- }
- }
- }
- return flag[x];
- }
- void dfs2(int x) //找最短距离
- {
- vis[x] = ;
- if (flag[x])
- ner[x] = x;
- for (int i = head[x]; i; i = nextt[i])
- {
- int v = to[i];
- if (!vis[v] && !flag[v])
- {
- mind[v] = mind[x] + w[i];
- ner[v] = ner[x];
- }
- if (!vis[v])
- dfs2(v);
- }
- }
- long long dfs3(int x) //最长距离+次长距离
- {
- vis[x] = ;
- for (int i = head[x]; i; i = nextt[i])
- {
- int v = to[i];
- if (!vis[v] && flag[v])
- {
- long long t = dfs3(v) + w[i];
- if (t > maxd[x])
- {
- secd[x] = maxd[x];
- maxd[x] = t;
- son[x] = v;
- }
- else
- if (t > secd[x])
- secd[x] = t;
- }
- }
- return maxd[x];
- }
- void dfs4(int x, long long lmax) //最后的更新
- {
- vis[x] = ;
- for (int i = head[x]; i; i = nextt[i])
- {
- int v = to[i];
- d[x] = max(lmax, maxd[x]);
- if (flag[v] && !vis[v])
- {
- if (v == son[x])
- dfs4(v, max(lmax, secd[x]) + w[i]);
- else
- dfs4(v, max(lmax, maxd[x]) + w[i]);
- }
- }
- }
- int main()
- {
- memset(flag, false, sizeof(flag));
- scanf("%d%d", &n, &k);
- for (int i = ; i < n; i++)
- {
- int x, y, z;
- scanf("%d%d%d", &x, &y, &z);
- add(x, y, z);
- add(y, x, z);
- }
- int t;
- for (int i = ; i <= k; i++)
- {
- scanf("%d", &t);
- flag[t] = ;
- }
- dfs1(t);
- memset(vis, , sizeof(vis));
- dfs2(t);
- memset(vis, , sizeof(vis));
- dfs3(t);
- memset(vis, , sizeof(vis));
- dfs4(t, );
- for (int i = ; i <= n; i++)
- printf("%lld\n", sum * + mind[i] - d[ner[i]]);
- return ;
- }
bzoj3743 [Coci2015]Kamp 常州模拟赛d6t2的更多相关文章
- 常州模拟赛d4t1 立方体
题目描述 立方体有 6 个面,每个面上有一只奶牛,每只奶牛都有一些干草.为了训练奶牛的合作精神,它 们在玩一个游戏,每轮:所有奶牛将自己的干草分成 4 等份,分给相邻的 4 个面上的奶牛. 游戏开始, ...
- [Bzoj3743][Coci2015] Kamp【换根Dp】
Online Judge:Bzoj3743 Label:换根Dp,维护最长/次长链 题目描述 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的 ...
- bzoj3743: [Coci2015]Kamp
首先树dp求出一个点的答案 然后再一遍dfs换根(是叫做换根吗.. 详见代码 #include <iostream> #include <cstdio> #include &l ...
- 2018.09.28 bzoj3743: [Coci2015]Kamp(树形dp)
传送门 这是一道很有意思的题. 我们把所有的关键点都提出来,当成一棵有边权的虚树. 然后发现虚树上除最后不回到虚根的那条路径外外每条边都会被走两遍. 显然要让答案最优,不走的路径应该在虚树的直径上,于 ...
- 常州模拟赛d7t3 水管
分析:第一问还是很好做的,关键是怎么做第二问.我们可以每次删掉最小生成树上的一条边,然后再求一次最小生成树,看边权和大小和原来的是不是一样的,不过这个做法效率很低. 考虑Kruskal算法的原理,每次 ...
- 常州模拟赛d6t3 噪音
FJ有M个牛棚,编号1至M,刚开始所有牛棚都是空的.FJ有N头牛,编号1至N,这N头牛按照编号从小到大依次排队走进牛棚,每一天只有一头奶牛走进牛棚.第i头奶牛选择走进第p[i]个牛棚.由于奶牛是群体动 ...
- 常州模拟赛d5t2 mogician
分析:一个暴力的思想是枚举g,然后枚举每个数ai,看能不能符合要求,这样复杂度是O(nA)的,直接T掉了.也没什么其他的办法了,在暴力的基础上优化一下,优化的关键是要如何快速统计出不满足要求的数的个数 ...
- 常州模拟赛d5t1 journalist
分析:出题人丧心病狂卡spfa......只能用dijkstar+堆优化. 主要的难点是字典序的处理上,一个想法是在做最短路的时候处理,边松弛边记录,比个大小记录最佳答案.具体的思路大概和最短路计数差 ...
- 常州模拟赛d4t3 字符串划分
题目描述 给你一串由小写字母组成的字符串,希望你把它划分成一些小段,使得每一小段字符串中的字母 都不相同,并且希望分的段数尽量少. 然后,把这些小段按字典序排序后输出,中间由一个空格分隔. 例如:字符 ...
随机推荐
- 利用基于@AspectJ的AOP实现权限控制
一. AOP与@AspectJ AOP 是 Aspect Oriented Programming 的缩写,意思是面向方面的编程.我们在系统开发中可以提取出很多共性的东西作为一个 Aspect,可以理 ...
- Windows64+Python27下配置matplotlib
注:转载请注明原作者并附上原文链接! 网上看了很多方法,均遇到这样或者那样的问题导致安装失败,最后自己摸索一条方法,最终安装成功了. 1,首先安装numpy,这个可以选择install安装包,很简单, ...
- 洛谷 P2419 [USACO08JAN]牛大赛Cow Contest
题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a p ...
- docker配置国内镜像
1. 配置 root@ros-OptiPlex-3050:~# cat /etc/docker/daemon.json { "graph": "/mnt/docke ...
- 使用JavaScript ES6的新特性计算Fibonacci(非波拉契数列)
程序员面试系列 Java面试系列-webapp文件夹和WebContent文件夹的区别? 程序员面试系列:Spring MVC能响应HTTP请求的原因? Java程序员面试系列-什么是Java Mar ...
- XDU——受教了
存在的问题还是很多的 GG 突然觉得刷题的目的并不是追求A.我们应该在那个过程中提高代码能力和建立模型解题能力 会的算法会巧妙应用才是王道 吐槽自己两句,写高数了
- NASM 之 helloworld1
SECTION .data msg: db "Hello World!", 0x0a len: equ $-msg SECTION .text global _main kerne ...
- java实现中文或其他语言及标点符号等转换成unicode字符串,或unicode的16进制码转换回文字或符号等
package org.analysisitem20181016.test; public class Code128Test2019052201 { public static final Stri ...
- 快学UiAutomator创建第一个实例
工具准备 一.准备好java环境(JDK)和安卓环境(SDK.ADT)jdk1.6+ \eclipse\SDK \ADT详情百度,安装java环境 二.打开eclipse 三.创建步骤: 右键新建== ...
- Jarvis OJ-Level4
借助DynELF实现无libc的漏洞利用小结 #!/usr/bin/env python # coding:utf-8 from pwn import * elf = ELF('level4') wr ...