URAL 1039 Anniversary Party (树形DP)
2015-10-19 17:35
471 查看
#include <stdio.h> #define MAX_EMPLOYEES 6000 #define MAX(x, y) ( (x) > (y) ? (x) : (y) ) int numOfEmployees; int convivialityRate[MAX_EMPLOYEES + 1]; typedef struct Subordinate{ int subordinate; int next; }Subordinate; Subordinate SubordinateArray[MAX_EMPLOYEES + 1]; int SubordinateNum; int head[MAX_EMPLOYEES + 1]; int visited[MAX_EMPLOYEES + 1]; int isRoot[MAX_EMPLOYEES + 1]; int convivialityArray[MAX_EMPLOYEES + 1][2]; void attendOrNot(int supervisor){ convivialityArray[supervisor][1] = convivialityRate[supervisor]; int i, subordinate; for (i = head[supervisor]; i != 0; i = SubordinateArray[i].next){ subordinate = SubordinateArray[i].subordinate; if (visited[subordinate] == 0){ visited[subordinate] == 1; attendOrNot(subordinate); convivialityArray[supervisor][1] += convivialityArray[subordinate][0]; convivialityArray[supervisor][0] += MAX(convivialityArray[subordinate][0], convivialityArray[subordinate][1]); } } } int main(){ //freopen("input.txt", "r", stdin); scanf("%d", &numOfEmployees); int i; for (i = 1; i <= numOfEmployees; i++){ scanf("%d", &convivialityRate[i]); isRoot[i] = 1; } int subordinate, supervisor; while (scanf("%d%d", &subordinate, &supervisor) != EOF){ isRoot[subordinate] = 0; if (subordinate == 0 && supervisor == 0) break; SubordinateNum++; SubordinateArray[SubordinateNum].subordinate = subordinate; SubordinateArray[SubordinateNum].next = head[supervisor]; head[supervisor] = SubordinateNum; } for (i = 1; i <= numOfEmployees; i++) if (isRoot[i] == 1){ visited[i] = 1; attendOrNot(i); printf("%d\n", MAX(convivialityArray[i][0], convivialityArray[i][1])); break; } return 0; }
相关文章推荐
- jquery+CSS实现的多级竖向展开树形TRee菜单效果
- cmd tree命令 以树形格式罗列文件
- JS+CSS简单树形菜单实现方法
- JS+CSS实现TreeMenu二级树形菜单完整实例
- 基于jquery实现的树形菜单效果代码
- 推荐8款jQuery轻量级树形Tree插件
- asp.net 获取指定文件夹下所有子目录及文件(树形)
- javascript 树形导航菜单实例代码
- js树形控件脚本代码
- 基于递归实现的php树形菜单代码
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- json+jQuery实现的无限级树形菜单效果代码
- php实现的树形结构数据存取类实例
- javascript实现树形菜单的方法
- js实现无限级树形导航列表效果代码
- LFC1.0.0 版本发布
- 树形数据表设计(转)
- Android px、dp、sp之间相互转换
- android中像素单位dp、px、pt、sp的比较