Accept: 28 Submit: 97

Time Limit: 1000 mSec Memory Limit : 32768 KB

Problem Description

YL是shadow国的国王,shadow国有N个城市。为了节省开支,shadow国仅仅有N-1条道路,这N-1条道路使得N个城市连通。某一年,shadow国发生了叛乱,叛军占据了多个城市,王都岌岌可危。王都为编号为1的城市,除了王都外有K个城市有YL的军队。如今这K支军队要向王都进军,而且消灭沿途经过的城市中的叛军。现给出N个城市的道路情况以及城市的叛军数量,问总共须要消灭多少叛军?

Input

第一行输入两个整数N,K,接下来输入N(1<=N<=100000)个整数Ai(0<=Ai<=10000),表示第i个城市的叛军数量。接下来输入K个大于等于1且小于等于N的整数,表示有军队的城市的编号。数据保证王都以及有军队的城市没有叛军。接下来输入N-1行,每行两个整数u、v,表示连接u和v的一条道路。每支军队仅仅能沿着道路走,而且是其所在城市与王都之间的最短路线走。

Output

输出一行一个整数表示消灭的叛军数量。

Sample Input

4 2
0 3 0 0 
3 4
1 2
2 3
2 4

Sample Output

3
  1. #include<stdio.h>
  2. #include<malloc.h>
  3. typedef struct nnn
  4. {
  5. int id;
  6. struct nnn *next;
  7. }*NODE,node;
  8. NODE edg[200005];
  9. int dp[200005],flog[200005],value[200005],vist[200005];
  10. void dfs(int p)
  11. {
  12. NODE NEXT,q;
  13. dp[p]=value[p]; vist[p]=1;
  14. for(NEXT=edg[p]->next; NEXT!=NULL; )
  15. {
  16. int son=NEXT->id;
  17. if(vist[son]){
  18. NEXT=NEXT->next; continue;
  19. }
  20. dfs(son);
  21. if(flog[son])
  22. {
  23. flog[p]=1; dp[p]+=dp[son];
  24. }
  25. q=NEXT;
  26. NEXT=NEXT->next;
  27. }
  28. }
  29. int main()
  30. {
  31. int n,k,a,b,i;
  32. NODE p;
  33. while(scanf("%d%d",&n,&k)>0)
  34. {
  35. for(i=0;i<=n;i++)
  36. {
  37. flog[i]=0; vist[i]=0;
  38. edg[i]=(NODE)malloc(sizeof(node));
  39. edg[i]->next=NULL;
  40. }
  41. for(i=1; i<=n; i++)
  42. scanf("%d",&value[i]);
  43. for(i=1; i<=k; i++)
  44. {
  45. scanf("%d",&a);
  46. flog[a]=1;
  47. }
  48. for(i=1; i<n;i++)
  49. {
  50. scanf("%d%d",&a,&b);
  51. p=(NODE)malloc(sizeof(node));
  52. p->id=b; p->next=edg[a]->next;
  53. edg[a]->next=p;
  54. p=(NODE)malloc(sizeof(node));
  55. p->id=a; p->next=edg[b]->next;
  56. edg[b]->next=p;
  57. }
  58. dfs(1);
  59. printf("%d\n",dp[1]);
  60. }
  61. }

FZU 2169 shadow (用了一次邻接表存边,树形DP)的更多相关文章

  1. QDUOJ 生化危机 邻接表存图+BFS

    生化危机 发布时间: 2015年10月10日 18:05   时间限制: 1000ms   内存限制: 256M 描述 X博士想造福人类, 研发一种可以再生肢体的药物, 可是很不幸......研究失败 ...

  2. FZU 2169 shadow spfa

    题目链接:shadow 好佩服自己耶~~~好厉害~~~ 麻麻再也不用担心我的spfa 和 邻接表技能了~~~ spfa 记录最短路径. #include <stdio.h> #includ ...

  3. 三种邻接表存图模板:vector邻接表、数组邻接表、链式前向星

    vector邻接表: ; struct Edge{ int u,v,w; Edge(int _u=0,int _v=0,int _w=0){u=_u,v=_v,w=_w;} }; vector< ...

  4. SDOI2010_大陆争霸(邻接表存图)

    题目描述 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的 克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭 的神曾·布拉泽,而克里斯国信仰象征光明和永恒的神斯 ...

  5. ZSTU OJ 3999 零基础学算法---邻接表

    题目:Click here 题意:我就喜欢中文题! 分析:这个题虽然是中文题,但是还是有一点费解的.其实就是给你一棵树,是用图的形式给你的,只知道a,b之间有一条边,并不知道谁是父,谁是子.思路就是先 ...

  6. POJ--3268--Silver Cow Party【SPFA+邻接表】

    题意:一些牛要去某一点參加聚会,然后再回到自己家,路是单向的,问花费时间最多的那头牛最少须要花费多长时间. 思路:从聚会地点返回,相当于是从某一点到其它各个点的最短路径.从牛的家中走到聚会地点,能够把 ...

  7. zzuli 1907: 小火山的宝藏收益 邻接表+DFS

    Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 113  Solved: 24 SubmitStatusWeb Board Description    ...

  8. HDU2586 How far away ? 邻接表+DFS

    题目大意:n个房子,m次询问.接下来给出n-1行数据,每行数据有u,v,w三个数,代表u到v的距离为w(双向),值得注意的是所修建的道路不会经过一座房子超过一次.m次询问,每次询问给出u,v求u,v之 ...

  9. 数据结构作业——图的存储及遍历(邻接矩阵、邻接表+DFS递归、非递归+BFS)

    邻接矩阵存图 /* * @Author: WZY * @School: HPU * @Date: 2018-11-02 18:35:27 * @Last Modified by: WZY * @Las ...

随机推荐

  1. hdu 2473 Junk-Mail Filter(并查集_虚节点)2008 Asia Regional Hangzhou

    感觉有些难的题,刚开始就想到了设立虚节点,但是实现总是出错,因为每次设立了虚节点之后,无法将原节点和虚节点分开,导致虚节点根本无意义. 以上纯属废话,可以忽略…… 题意—— 给定n个点(0, 1, 2 ...

  2. C# Adding Hyperlink to Windows Form z

    When creating a Windows form in C#, we would like to create a hyperlink so that when the user click ...

  3. QC开发只能修改指派给自己的缺陷,而其他的bug可以查看但是不允许修改

    今天在QC9.0项目中增加了几个项目,然后我的想法是:开发只能修改指派给自己的缺陷,而其他的bug可以查看但是不允许修改 虽说qc我还是比较熟悉的,但是对于这个问题,感觉可能要用到脚本,对于脚本我一窍 ...

  4. javascript AES加密 C#AES解密实现

    首先需要引入js类库 crypto-js(开源),地址:http://code.google.com/p/crypto-js 现在很多人无法打开这个地址不要紧,下面我们会将全部代码贴出来 需要引入 a ...

  5. html在图片上实现下雨效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  6. VS中使用QT调用R脚本

    一开始想直接把R编译成库然后调用R,后来查了n多资料,发现VS中是无法办到的,官方也给出了一句话,大概意思就是没可能在VS中使用R提供的C++接口,大概是涉及到了底层的ABI的原因,具体也不太清楚. ...

  7. 我用dedecms有感

    ---恢复内容开始--- 最近接了一个私单,简单的学校网站,注意,我一看上去是感觉很快,仿站,对方说这个东西你三天就能搞定啦,我也这么想的 (没经验啊) 接下来,我想都没想就用dedecms去做,之前 ...

  8. The Services(服务)

    datastore和运行时环境的关系就是和一个服务的关系:应用使用API访问一个独立的系统(separate system),这个系统管理应用的所有的独立于应用实例的扩展需求(scaling need ...

  9. Junit3.8 私有方法测试

    1. 测试类的私有方法时可以采取两种方式:1) 修改方法的访问修饰符,将private修改为default或public(但不推荐采取这种方式).2) 使用反射在测试类中调用目标类的私有方法(推荐). ...

  10. [转] GCC 中的编译器堆栈保护技术

    以堆栈溢出为代表的缓冲区溢出已成为最为普遍的安全漏洞.由此引发的安全问题比比皆是.早在 1988 年,美国康奈尔大学的计算机科学系研究生莫里斯 (Morris) 利用 UNIX fingered 程序 ...