cdoj 791 Frozen Rose-Heads

//本来想做白书上一题 结果发现又要二染色 又要dp的 想了两个小时没想通 然后做了个傻逼题安慰自己

解:不多说,就是递归到叶节点,然后回来的时候在解决子树和直接删边的代价中间取个最小值

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<cstdlib>
 7 #include<queue>
 8 #include<vector>
 9 #include<map>
10 #include<stack>
11 #include<string>
12
13 using namespace std;
14
15 const int MAXN=1007;
16 const int MAXINT=2000000000;
17
18 int n,c;
19 vector <int> G[MAXN];
20 int cost[MAXN][MAXN];
21
22 int dfs(int now,int fa){
23     if (G[now].size()==1 && G[now][0]==fa){
24             return MAXINT;
25     }
26     int tmp=0;
27     for (int i=0;i<(int)G[now].size();i++){
28             if (G[now][i]==fa) continue;
29             tmp=tmp+min(dfs(G[now][i],now),cost[now][G[now][i]]);
30     }
31     return tmp;
32 }
33
34 int main(){
35     while (scanf("%d%d",&n,&c)==2){
36             for (int i=1;i<=n;i++) G[i].clear();
37             for (int i=0;i<n-1;i++){
38                     int x,y,z;
39                     scanf("%d%d%d",&x,&y,&z);
40                     cost[x][y]=z;
41                     cost[y][x]=z;
42                     G[x].push_back(y);
43                     G[y].push_back(x);
44             }
45             printf("%d\n",dfs(c,-1));
46     }
47     return 0;
48 }
49 /*
50 3 1
51 2 1 5
52 1 3 4
53 7 7
54 7 6 10
55 7 5 10
56 6 4 1
57 6 3 1
58 5 2 1
59 5 1 2
60
61 4 1
62 1 2 1
63 2 3 1
64 2 4 1
65 */

时间: 2024-10-12 07:26:51

cdoj 791 Frozen Rose-Heads的相关文章

时序图与状态图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

类图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

Rational Rose

Rational Rose简明实用教程 http://furzoom.com/rational-rose-course/ Unidirectional Association 单向关联 generalization 归纳; 一般化; 普通化; 概论 UML用例图中包含(include).扩展(extend)和泛化(generalization) UML总结(对九种图的认识和如何使用Rational Rose 画图) 使用Rational Rose进行用例图和活动图 使用Rational Rose

Rational Rose与UML教程

在学UML的过程中,Rational Rose的角色无比重要.现在能找到的大多数是2003的,但下面连接是2007. http://blog.csdn.net/skl_TZ/article/details/8925152 这个教程会教会你用Rational Rose.包括用例图,类图,时序图,协作图和状态图的绘制. 启动Rational Rose后,它会提示你去创建新模型.有一些模型给你选择.在这个教程中,我们会选择J2EE模型.如果你有已存在的模型,选择“”“Existing”标签或“Rece

hdu 5745 la vie en rose

这道题的官方题解是dp,但是可以暴力出来.改天再研究怎么dp. 暴力的时候,如果计算sum的时候,调用strlen函数会超时,可见这个函数并不是十分的好.以后能不用尽量不用. La Vie en rose Time Limit: 14000/7000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 861    Accepted Submission(s): 461 Problem

CDOJ 1273 God Qing&#39;s circuital law

暴力枚举+idea.做的时候mod写错了,写成了1000000009,找了两个多小时才发现...... a[1],a[2],a[3]....a[N] b[1],b[2],b[3]....b[N] 首先需要枚举b[1]...b[N]与a[1]进行组合. 然后对a[2]...a[N]从小到大排序 对b[1],b[2],b[3]....b[N] 除当前与a[1]组合的以外,剩下的从大到小排序 然后找出每一个a[i]在不破坏a[0]最大值的情况下最大能与哪一个b[i]配对. 然后从第N个人开始往第2个人

Gun N&#39; Rose Team Review

一看到这个项目就被他的功能给吸引了.回忆起以前看到一个东西很新奇想去网上查询它是什么,但是又不知道应该怎样去描述它,于是在搜索引擎的输入框中键入.删除.键入.删除的可笑经历的时候,我就越发感觉到这个app的必要性了.画出查询对象的大致轮廓,系统自动搜筛选出相似的图片,这个app实现了“所见即所得”,令人称赞. 当然,这个app也存在很多局限性,比如说它返回的图片数量很大,没能实现精确定位,如果能让用户在输入时添加对对象的模糊描述,比如说:不是房子,像苹果等无疑将提高搜索的准确度.另外,这个app

装机配置相关---破解Rational Rose 2003

网上关于Retional rose 2003安装和破解的文章比较多,这里,我结合自己的亲身体验,和大家分享一下win7 旗舰版 64位系统下Retional rose 2003(下面简称rose2003)的安装和破解过程.本文中rose2003的安装路径为D:\Program Files (x86)\Rational,下文按照该路径介绍.     rose2003的下载地址:http://www.oyksoft.com/soft/1880.html 破解压缩包的下载地址:http://files

BZOJ 1822 Frozen Nova 冷冻波(最大流)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1822 题意:WJJ喜欢“魔兽争霸”这个游戏.在 游戏中,巫妖是一种强大的英雄,它的技能Frozen Nova每次可以杀死一个小精灵.我们认为,巫妖和小精灵都可以看成是平面上的点. 当巫妖和小精灵之间的直线距离不超过R,且巫妖看到小精灵的视线没有被树木阻挡(也就是说,巫妖和小精灵的连线与任何树木都没有公共点)的话,巫妖就可以 瞬间杀灭一个小精灵. 在森林里有N个巫妖,每个巫妖释放Froz