cf219d
树形dp
#include <cstdio>
#include <vector>
using namespace std; #define D(x) const int INF = 0x3f3f3f3f;
const int MAX_N = (int)(2e5) + ; int n;
vector<pair<int, int> > edge[MAX_N];
int re_num[MAX_N];
vector<int> ans_vec; int dfs(int father, int u, int add, int re_add)
{
D(printf("u=%d\n", u));
int ret = ;
for (int i = ; i < (int)edge[u].size(); i++)
{
int v = edge[u][i].first;
int w = edge[u][i].second;
if (v == father)
{
continue;
}
D(printf("u=%d, v=%d\n", u, v));
ret += dfs(u, v, add + ( - w), re_add + w) + w;
}
re_num[u] = add - re_add;
D(printf("%d %d\n", u, ret));
return ret;
} int main()
{
scanf("%d", &n);
for (int i = ; i < n; i++)
{
int a, b;
scanf("%d%d", &a, &b);
edge[a].push_back(make_pair(b, ));
edge[b].push_back(make_pair(a, ));
D(printf("%d %d\n", a, b));
}
fill_n(re_num, n + , );
int ans = dfs(-, , , );
ans_vec.push_back();
int root_ans = ans;
D(printf("%d\n", root_ans));
for (int i = ; i <= n; i++)
{
int temp = re_num[i] + root_ans;
if (temp == ans)
{
ans_vec.push_back(i);
}
if (temp < ans)
{
ans = temp;
ans_vec.clear();
ans_vec.push_back(i);
}
}
printf("%d\n", ans);
for (int i = ; i < (int)ans_vec.size(); i++)
{
printf("%d", ans_vec[i]);
if (i != (int)ans_vec.size() - )
putchar(' ');
}
puts("");
return ;
}
cf219d的更多相关文章
- CF219D. Choosing Capital for Treeland [树形DP]
D. Choosing Capital for Treeland time limit per test 3 seconds memory limit per test 256 megabytes i ...
- cf219d 基础换根法
/*树形dp换根法*/ #include<bits/stdc++.h> using namespace std; #define maxn 200005 ]; int root,n,s,t ...
- CF219D Choosing Capital for Treeland
嘟嘟嘟 树形dp. 首先一个很常规的想法就是如果u到v有一条边,那么建立cost(u, v) = 0, cost(v, u) = 1的两条边. 可以两遍dfs. 先任选一个点作为根节点,第一遍从下往上 ...
随机推荐
- js调用ios的方法
摘要 在做h5应用的时,有时有些功能js并不能实现的特别完美.比如下载进度条或上传文件进度等.如果能调用ios或者android的方法,实现进度,以及文件上传或者下载列表更好一些.如果使用第三方的js ...
- 如何提高MySQL Limit查询的性能
MYSQL的优化是非常重要的.其他最常用也最需要优化的就是limit.mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降. 同样是取10条数据 select ...
- PHP常用的一些正则表达式
附一些常用的正则运算: 验证数字:^[0-9]*$验证n位的数字:^\d{n}$验证至少n位数字:^\d{n,}$验证m-n位的数字:^\d{m,n}$验证零和非零开头的数字:^(0|[1-9][0- ...
- php后台多用户权限组思路与实现程序代码
网站开发少不了有网站后台,有了后台自然要对用户有同角色来分配一下,特别是多用户系统的情况下,如我一个系统要有多个管理员,那么我这些管理要分成,编辑,友情连接,管理员等,那我们要有权限和角色分配,今天我 ...
- 使用SandCastle创建.Net帮助文档
使用SandCastle创建.Net帮助文档 引用自:http://www.cnblogs.com/DotNetNuke/archive/2009/04/23/1441899.html Sandcas ...
- Nginx安装配置(转)
Nginx 安装配置 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/ ...
- [AngularJS] jQuery时代
抹平浏览器差异的jQuery出现了 jQuery有什么 jQuery使得开发无刷新动态页面(AJAX)或者单页应用(SAP)变得 相当简单. 标准的HTML页面是静态的,被浏览器渲染后就产生了一个DO ...
- 关于COOKIE学习的一二
index.php <?php setcookie("name","dalisng",time()+3600); setcookie("addr ...
- eclipse工具背景色模板-程序员保护好自己的眼睛
做为coder,要保护好自己的眼睛,eclipse 强烈推荐 Eclipse Color Theme插件,该插件包含多种当前流行的主题选择. 安装方法: 安装方法:1.先安装一个Eclipse Col ...
- MySQL Cluster 配置文件(config.ini)详解
MySQL Cluster 配置文件(config.ini)详解 ################################################################### ...