51nod-1737 配对
来源:互联网 发布:以后淘宝开店收税吗 编辑:程序博客网 时间:2024/05/17 19:59
原题连接
1737 配对
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
收藏
关注
给出一棵n个点的树,将这n个点两两配对,求所有可行的方案中配对两点间的距离的总和最大为多少。
Input
一个数n(1<=n<=100,000,n保证为偶数)接下来n-1行每行三个数x,y,z表示有一条长度为z的边连接x和y(0<=z<=1,000,000,000)
Output
一个数表示答案
Input示例
61 2 11 3 11 4 13 5 14 6 1
Output示例
7//配对方案为(1,2)(3,4)(5,6)
#include <bits/stdc++.h>#define maxn 100005using namespace std;typedef long long ll;struct Edge{Edge(){}Edge(int a, int b, int c){from = a; to = b; d = c;}int from, to, d;};vector<Edge> v[maxn];int p[maxn], n;ll ans;void dfs(int j, int f){ p[j] = 1; for(int i = 0; i < v[j].size(); i++){ Edge a = v[j][i]; if(a.to != f){ dfs(a.to, j); p[j] += p[a.to]; } } }void Dfs(int j, int f){for(int i = 0; i < v[j].size(); i++){Edge a = v[j][i];if(a.to != f){ans += min(n-p[a.to], p[a.to]) * (ll)a.d;Dfs(a.to, j);}}}int main(){//freopen("in.txt", "r", stdin);int a, b, c;scanf("%d", &n);for(int i = 0; i < n-1; i++){scanf("%d%d%d", &a, &b, &c);v[a].push_back(Edge(a, b, c));v[b].push_back(Edge(b, a, c));}dfs(1, -1);Dfs(1, -1);cout << ans << endl;}
0 0
- 51nod-1737 配对
- 【51NOD 1737】配对
- 51nod 1737 配对
- 51Nod 1737 配对
- 51Nod-1737-配对
- 51nod 1737 配对 乱搞
- 51 nod 1737 配对(贡献)
- 51nod 1737 配对【树的重心】
- 51nod 1737 配对 【树形dp】
- 51nod 1737 配对 树的重心
- 51nod 1737 配对(求贡献)
- 51nod 1737 配对(树的重心)
- 【51NOD 1558】树中的配对
- 51NOD算法马拉松21(迎新年) A - 1737 配对(dfs树的重心)
- 【51nod 1737 配对】+ 链式前向星 + dfs + 输入外挂
- 51nod 1737 配对 && Codeforces 700B Connecting Universities【树的重心】
- 51Nod-2006-飞行员配对(二分图最大匹配)
- 51nod 2006 飞行员配对(二分图最大匹配)
- Android Studio 如何自定义导出apk文件名
- Java设计模式12:装饰器模式
- 深度学习中的激活函数和损失函数
- 2223624.html
- Bean、Model、Entity、的区别
- 51nod-1737 配对
- android中activity管理及界面传值
- enum总结
- PopupWindow仿淘宝排序选择,多个切换
- 《神经网络与深度学习--Nilsen》+BP学习笔记
- 文章标题
- daterangepicker 控件设置日期格式
- 解决:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- Docker(一)-构建Docker