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
#include<stdio.h>
#include<malloc.h>
typedef struct nnn
{int id;struct nnn *next;
}*NODE,node;
NODE edg[200005];
int dp[200005],flog[200005],value[200005],vist[200005];
void dfs(int p)
{NODE NEXT,q;dp[p]=value[p]; vist[p]=1;for(NEXT=edg[p]->next; NEXT!=NULL; ){int son=NEXT->id;if(vist[son]){NEXT=NEXT->next;  continue;}dfs(son);if(flog[son]){flog[p]=1; dp[p]+=dp[son];}q=NEXT;NEXT=NEXT->next;}
}
int main()
{int n,k,a,b,i;NODE p;while(scanf("%d%d",&n,&k)>0){for(i=0;i<=n;i++){flog[i]=0; vist[i]=0;edg[i]=(NODE)malloc(sizeof(node));edg[i]->next=NULL;}for(i=1; i<=n; i++)scanf("%d",&value[i]);for(i=1; i<=k; i++){scanf("%d",&a);flog[a]=1;}for(i=1; i<n;i++){scanf("%d%d",&a,&b);p=(NODE)malloc(sizeof(node));p->id=b; p->next=edg[a]->next;edg[a]->next=p;p=(NODE)malloc(sizeof(node));p->id=a; p->next=edg[b]->next;edg[b]->next=p;}dfs(1);printf("%d\n",dp[1]);}
}

FZU 2169 shadow (用了一次邻接表存边,树形DP)相关推荐

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

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

  2. 迪杰斯特拉最全详解(朴素版,堆优化+邻接表存图/链式前向星存图)

    迪杰斯特拉 迪杰斯特拉算法分析 迪杰斯特拉(朴素版) 迪杰斯特拉堆优化(邻接表存图) 迪杰斯特拉堆优化(链式前向星存图) 最短路--spfa(链式前向星存图) 迪杰斯特拉算法分析 一般用三种数据结构存 ...

  3. 【邻接表存图模板】vector邻接表、数组邻接表、链式前向星

    一.目录 一.目录 二.前言 三.邻接表"详解" (一)边的信息 (二)几种邻接表的实现方法"详解" 1.数组邻接表 代码 2.vector邻接表 代码 vec ...

  4. 喊山 (bfs)邻接表存

    喊山,是人双手围在嘴边成喇叭状,对着远方高山发出"喂-喂喂-喂喂喂--"的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的"讯号",达 ...

  5. PAT甲级1094 The Largest Generation:[C++题解]邻接表存树、每层节点数量、vector模拟bfs层序遍历、bfs另类实现

    文章目录 题目分析 题目链接 题目分析 来源:PAT网站 题意重述:求一棵树中结点数量最多的层数,并输出最大的数量. 分析:使用邻接矩阵存储树,bool型变量g[N][N] 邻接矩阵,如果有边 置为t ...

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

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

  7. 邻接表建立图(c语言)

    邻接表建立图 有向图 无向图 邻接表存图进行拓扑排序 不得不说网上的真的是太乱了,看得我脑壳疼 自己写的可以,感觉好的话可以当成模板. 有向图 代码: #include<stdio.h> ...

  8. 7-2 单源最短路径 (10 分)(思路+详解+邻接表做法)Come Brather!!!!!!!!!!

    一:前言 本次题解先展示用邻接矩阵做的,但其会出现内存超限,因为确实是临界矩阵在数据很大的时候相比临界表是耗内存的,但是以前习惯用临界矩阵了,所以一上来就用临界矩阵做了,后来上网查了后知道邻接矩阵会内 ...

  9. 1319. 移棋子游戏(sg+图论(移棋子)邻接表)

    题目:https://www.acwing.com/problem/content/1321/ 给定一个有 N 个节点的有向无环图,图中某些节点上有棋子,两名玩家交替移动棋子. 玩家每一步可将任意一颗 ...

最新文章

  1. 限制输入字符串的长度
  2. 中国饲用微生态制剂行业十四五研发方向与专项应用调研报告2022年
  3. MySQL 数据存储文件
  4. 图论算法》关于SPFA和Dijkstra算法的两三事
  5. h5的语义化部分_Html5新增的语义化标签(部分)
  6. 利用SQL查找表中的质数(prime number)和完全数(perfect number)以及几个有趣的SQL语句...
  7. 【ACDU推荐好文】手把手教你 DBCA 搭建 Oracle ADG
  8. python 脚本编码_Python-我如何编码我的Python脚本
  9. leetcode(二)—— Add Two Numbers(Python/C++)
  10. 怎样使按钮响应回车键
  11. Win7开机自动拨号上网
  12. 皮德常《c++程序设计教程》第一章第二题:编写一个程序,要求用户输入一年12个月每月的降雨总数,并用一个float数组存储。
  13. VMware虚拟机下载安装详解
  14. pug在vue中的序列写法
  15. 伊利洛伊大学厄巴纳-香槟分校计算机专业,申请伊利诺伊大学香槟分校计算机科学专业需要具备哪些条件?看完文章你就清楚了...
  16. 【已解决】sftp命令没有反应
  17. 四川高考2021成绩排名查询,2020年四川高考成绩排名查询系统 四川高考位次排名表...
  18. 保护计算机数据库,保护Access2000数据库的安全
  19. zuk z2刷机android p,ZUK Z2121 (Z2 Pro 全网通)一键刷机教程,简单几步刷机
  20. 美拍sig算法so分析

热门文章

  1. ORA-01078和LRM-00109问题导致ORACLE启动失败解决方法
  2. 解决spring-boot-maven-plugin插件打包,springboot启动时报找不到主main问题
  3. 即使对象属性显示在控制台日志中,也无法访问
  4. Swift语言中的#ifdef替换
  5. 如何使用JavaScript获取客户端的IP地址?
  6. Style主题Theme风格Android
  7. python图像压缩主成分分析实例_python机器学习API介绍13: 数据降维及主成分分析...
  8. 关于现代计算机的知识,从资本经济到知识经济:现代计算机的知识革命
  9. apache在线升级yum_linux yum安装apache
  10. kettle使用命令行的方式执行多个job_手把手教你实现xxl-job分布式任务调度平台搭建