fzu 2195 检查站点
来源:互联网 发布:编程电脑配置 编辑:程序博客网 时间:2024/06/05 11:51
http://acm.fzu.edu.cn/problem.php?pid=2195
给出一棵生成树,1为根节点,N个点,N-1条边,从父节点到儿子节点是不花费的,但是反向则是有花费的,问从1开始走,把所有点都遍历一次需要的最少花费,思路就是,既然最终肯定是停在一个叶子节点的,那么必定是有一条路到这个叶子节点是不花费的,那么为了花费最少,用全部的路花费和减去最远的路的长度即可。
#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <queue>#include <vector>using namespace std;int n;vector<int> po[111111];vector<int> co[111111];int su[111111];int find(int x){ if(po[x].size()==0) { return su[x]=0; } else if(po[x].size()==1) { return su[x]=find(po[x][0])+co[x][0]; } else { for(int i=0;i<po[x].size();i++) { if(po[po[x][i]].size()==0) { su[x]=max(su[x],co[x][i]); } else { su[x]=max(su[x],co[x][i]+find(po[x][i])); }}return su[x]; }}int main(){while(scanf("%d",&n)!=EOF){ int x,y;int z; for(int i=1;i<=100221;i++) { po[i].clear(); co[i].clear();} memset(su,0,sizeof(su));int sum=0; for(int i=1;i<=n-1;i++) { scanf("%d%d%d",&x,&y,&z); sum+=z; co[x].push_back(z); po[x].push_back(y);}int lss=find(1);int lm=sum-lss;cout<<lm<<endl;}return 0;}
阅读全文
0 0
- 【FZU 2195】检查站点
- FZU 2195 检查站点
- fzu 2195 检查站点
- FZU-2195 检查站点
- fzu 2195 检查站点
- FZU 2195 检查站点(数学啊)
- FZU 2195 检查站点 (树形dp)
- FZU 2195 检查站点 (树形dp)
- FZU 检查站点
- FZU 2195 检查站点(并查集或者树)
- FZU 2195 检查站点【带权并查集】
- FZU 2195 检查站点(并查集)
- FZU 2195 检查站点【带权并查集】
- Problem 2195 检查站点
- foj 2195 检查站点
- 检查站点
- Problem 2195 检查站点<简单代码>
- Problem 2195 检查站点【最小生成树】
- 简单实现 一级列表购物车(固定数据)
- LaTeX快速指南(二)LaTex的结构
- BZOJ4027 [HEOI2015]兔子与樱花 树形dp+贪心
- hdu 1242 Rescue
- 2017/11/19
- fzu 2195 检查站点
- java 自我知识总结(十一)构造函数 继承 及类的加载顺序
- 【常用排序算法】快速排序(Java实现)
- 交大oj-1008-二哥买期货 C++ 总结
- 201403-1 相反数 ccf
- scrapy使用random user-agent的两种方式
- SpringMvc之国际化-yellowcong
- SSM框架实战系列之二_Maven之一
- HTML:使用列表