【POJ】1935 Journey(树形dp)
题目
传送门:QWQ
分析
凉凉。
答案是所有要经过的点到根所经过的边权和减去最大的边权。
代码
vector好慢啊
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn=;
int d[maxn], fa[maxn];
struct Edge{int u,v,dis;};
vector<int> G[maxn];vector<Edge> edges;
int n, ans;
int val[maxn], vis[maxn];
void Addedge(int u,int v,int dis){
edges.push_back((Edge){u,v,dis});edges.push_back((Edge){v,u,dis});
int m=edges.size()-;G[u].push_back(m-);G[v].push_back(m);
}
int dfs(int x,int f,int depth){
fa[x]=f; d[x]=depth;
for(int i=;i<G[x].size();i++){
Edge v=edges[G[x][i]];
if(v.v==f) continue;
dfs(v.v,x,depth+v.dis);
if(vis[v.v]) vis[x]=,ans+=edges[G[x][i]].dis*;
}
}
int main(){
int n,k,a,b,c;
scanf("%d%d",&n,&k);
for(int i=;i<n-;i++){
scanf("%d%d%d",&a,&b,&c);
Addedge(a,b,c);
}
int m; scanf("%d",&m);
for(int i=;i<m;i++){
scanf("%d",&val[i]); vis[val[i]]=;
}
dfs(k,,);
int maxnum=;
for(int i=;i<=n;i++){
if(vis[i]) maxnum=max(maxnum,d[i]);
}
printf("%d",ans- maxnum);
return ;
}
/*
4 2
1 2 1
4 2 2
2 3 3
1
1
*/
【POJ】1935 Journey(树形dp)的更多相关文章
- [POJ 1155] TELE (树形dp)
题目链接:http://poj.org/problem?id=1155 题目大意:电视台要广播电视节目,要经过中转机构,到观众.从电视台到中转商到观众是一个树形结构,经过一条边需要支付成本.现在给你每 ...
- Apple Tree POJ - 2486 (树形dp)
题目链接: D - 树形dp POJ - 2486 题目大意:一颗树,n个点(1-n),n-1条边,每个点上有一个权值,求从1出发,走V步,最多能遍历到的权值 学习网址:https://blog.c ...
- Anniversary party POJ - 2342 (树形DP)
题目链接: POJ - 2342 题目大意:给你n个人,然后每个人的重要性,以及两个人之间的附属关系,当上属选择的时候,他的下属不能选择,只要是两个人不互相冲突即可.然后问你以最高领导为起始点的关系 ...
- POJ 3107.Godfather 树形dp
Godfather Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7536 Accepted: 2659 Descrip ...
- POJ 3342 (树形DP)
题意 :给出一些上下级关系,要求i和i的直接上级不能同时出现,现在选出一些人构成一个集合,问你这个集合里面的最大人数是都少,同时给出这个最大的人数的集合是否唯一. 思路:树形DP,dp[i][0],表 ...
- POJ 2342 (树形DP)
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3863 Accepted: 2172 ...
- POJ Anniversary party 树形DP
/* 树形dp: 给一颗树,要求一组节点,节点之间没有父子关系,并且使得所有的节点的权值和最大 对于每一个节点,我们有两种状态 dp[i][0]表示不选择节点i,以节点i为根的子树所能形成的节点集所能 ...
- POJ 1947Rebuilding Roads(树形DP + 01背包)
题目链接 题意:给出一个树形结构,求P个节点的子树最少要去掉几条边 分析:DP[root][j] 表示 以第 root 个为根节点, 包含j 个节点需要去掉几条边.那么对于 root 这个根节点来说, ...
- POJ 1947 (树形DP+背包)
题目链接: http://poj.org/problem?id=1947 题目大意:树中各点都由一条边连接.问要弄出个含有m个点的(子)树,至少需要截去多少条边. 解题思路: 设dp[i][j]为i总 ...
- Tree Cutting POJ - 2378 (树形DP)
题目链接:POJ - 2378 题目大意:给你n个点,然后问你这n个点中 ,去除哪些点能够使得剩下的图中最大的连通块中点的个数不超过n/2. 具体思路:第一遍dfs记录每一个点代表的子树大小,第二遍d ...
随机推荐
- MySQL 5.7.17 Windows安装和启动
1.在官网http://dev.mysql.com/downloads/下载 MySQL Community Server 2.解压后是这个样子(5.7.18解压后没有my-default.ini文件 ...
- Android SDK manager 闪退
在SDK安装目录找到tools文件夹,点击进入找到android.bat右键编辑:找到如下指令: rem Check we have a valid Java.exe in the path. set ...
- Oracle10g客户端链接服务端配置
Oracle10g客户端工具plsql链接服务端配置 Oracle10g客户端工具比如plsql,在网络中链接服务端问题比较多中国菜刀,经常出现很多莫名其妙的问题.实际上不是plsql的配置,问题还是 ...
- 配置AD RMS的一点心得
基本上是按照下面的连接配置的,微软写的很好 AD RMS Step-by-Step Guide http://technet.microsoft.com/en-us/library/cc753531( ...
- django使用bootstrap快速美化 admin后台
使用django-admin-bootstrappe快速美化后台 两步: 1.pip install django-admin-bootstrapped 安装应用 2.在setting.py里面添加 ...
- 2018-2019-2 20165332 《网络对抗技术》Exp4 恶意代码分析
2018-2019-2 20165332 <网络对抗技术>Exp4 恶意代码分析 原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分 ...
- UVA-11988 Broken Keyboard (a.k.a. Beiju Text) (链表 或 递归)
题目大意:将一个字符串改变顺序后输出.遇到“[”就将后面内容拿到最前面输出,遇到“]”就将后面的内容拿到最后面输出. 题目分析:用nxt[i]数组表示i后面的字符的下标,实际上就是以字符i为头建立链表 ...
- For循环重复代码的重构
DRY(don't repeat yourself),重复往往是代码腐烂的开始,我们一般的处理手法是将重复的代码提取成一个方法,然后用新方法替换掉原来的代码. 但是对于for循环里面的重复代码要如何处 ...
- 在JavaScript中进行文件处理,第五部分:Blobs
译注:原文是<JavaScript高级程序设计>的作者Nicholas Zakas写的,本翻译纯属为自己学习而做,仅供参考.原文链接:这里 到目前为止,这个系列的帖子集中在和这些文件交互- ...
- SharePoint 2013的100个新功能之网站管理(三)
一:跨网站发布 跨网站发布是SharePoint 2013的一个新功能,可以使用户跨网站集.Web应用程序甚至是场重用内容.该功能叫做跨网站发布功能.用户可以使用该功能在SharePoint 2013 ...